There are many styles of functional programming; the thing they have in common is that they all use first-class, high-level functions to implement features which other languages might implement via special-purpose syntax, bytecode, compiler passes, etc.<p>The &quot;lambda the ultimate&quot; papers are the classic example of using functions to implement a variety of language features, including jumps. Hence the author&#x27;s claim that functional programming is an &quot;inside-out&quot; approach is more of a question of style than of paradigm.<p>For example, even simple function composition can approach the clarity of imperative code for following a step-by-step process. The result tends to look like UNIX pipes, although traditionally they&#x27;re read &quot;right to left&quot; (but you can trivially define your own composition function which goes the other way).<p>Here&#x27;s an example of the author&#x27;s task, written in a compositional style rather than an &quot;inside out&quot; style:<p><pre><code>    heatedOven = preheat 175 oven

    preparedPans = grease . flour $ pans

    flourMixture = whisk . add flour . add bakingSoda . add salt $ smallBowl

    creamedMixture = until (all [light, fluffy]) . cream . add butter . add whiteSugar . add brownSugar $ largeBowl

    bananaMixture = mix . add bananas . repeat eggCount (beat . add egg) $ creamedMixture

    batter = stir . add (chop walnuts) . repeat (size &#x2F; spoonful) (add (spoonful flourMixture) . add (spoonful buttermilk)) $ bananaMixture

    baked = take . wait 30 . add (add batter preparedPans) $ heatedOven

    cake = take . wait 10 . add baked $ dampen teaTowel</code></pre>