This is why programming languages that support nesting really help in some scenarios. It&#x27;s great to be able to write functions inside functions, with or without captured variables&#x2F;bindings. (I know a tree isn&#x27;t all graphs, but it works well for many scenarios.)<p>When I start on a new program in F#, I usually just start with one main function and keep typing straight on down. When I want to re-organize it into a module, it&#x27;s usually nearly as easy as writing &quot;module&quot; at the top.<p>Without this, one is encouraged to either not abstract properly as the overhead and context for a new top-level function is too much, or you end up with free-floating functions that don&#x27;t belong there and only have a single caller.