4 ms·
How about function bakeCake() { return do( () => gatherIngredients(), ingredients => mix(ingredients), batter => pour(batter,
by postalrat 4y ago
How about
function bakeCake() {
return do(
() => gatherIngredients(),
ingredients => mix(ingredients),
batter => pour(batter, pan),
batterInPan => bake(batterInPan, 350, 45),
() => coolOff(bakedInPan),
cooledCake => separateFromPan(cooledCake)
);
}
- ubertaco 4y ago...which is just function bakeCake() { const ingredients = gatherIngredients(); const batter = mix(ingredients); const batterInPan = pour(batter, pan); bake(batternInPan, 350, 45); // this is an in-place modifying function, I guess const cooledCake = coolOff(bakedInPan); return separateFromPan(cooledCake); } ...but with an extra `do(...)` wrapper? It could at least be function bakeCake() { return do( gatherIngredients, mix, batter => pour(batter, pan), batterInPan => bake(batterInPan, 350, 45), coolOff, separateFromPan ); } Although if we had function currying, the convention in ML languages is to put the most-commonly-piped-in param last for these functions: function bakeCake() { return do( gatherIngredients, mix, pour(pan), // assuming that pour(pan) returns a function that pours something into that pan bake(350, 45), // assuming that bake(temp, minutes) returns a function that bakes something at that temperature for that time coolOff, separateFromPan ); }