
Quoth Magnus Therning, nevermore,
I'm not sure how a "functional" recipe would look, maybe something like this:
White_sauce is a combination of ... .
Chopped_onions is onions cut into small pieces.
White_sauce_with_chopped_onions is the combination of white_sauce and chopped_onions.
The functional approach
whitesauce = foldl stir base milks where base = flour + (heat butter)
compared with the imperative
whitesauce base = flour + heat(butter); while (milks > 0) stir(base, milk); milks--;
I'm going to go out on a limb here and suggest that, like Feynman's example of how people count in their heads, both of these explanations are accurate. If I were to explain the process to someone it would be in the imperative style: literally "giving commands", which is what a recipe is. But in my mind I imagine it as the gradual process of stirring milk into a base, which is far more adequately described in the functional style. The question is --- how would an expert describe such a process? Would a professional chef give instructions in the functional or imperative style? I think that is relevant, since the approach to the problem may change depending on proficiency. We may *learn* in the imperative style but *think* in the functional. Cheers, Dougal.