It's worth thinking about what kinds of optional tutorial scenarios we could make that would guide people through familiar FP concepts like lambdas, pair and sum types, etc. if they have never seen those things before.
lambdas: it's tricky thinking of ways to force the player to use lambdas. It might be neat if we had a way of requiring the player to define things with a given name and type, which we could test property-based-testing style. Otherwise I am not sure how to enforce that a user uses a function for something. Perhaps instead of impossible we should think in terms of a task that would be very tedious to do without functions...?
We could also imagine having a way to test definitions themselves, i.e. actually verifying that a certain definition uses lambdas.
sum types: I'm imagining a scenario where there is a row of invisible items and you have to do something with certain ones, to force you to use scan and then deal with the output. I'm not sure how to do it in such a way that you can't just use ishere.
product types: maybe something requiring you to use whereami?
It's worth thinking about what kinds of optional tutorial scenarios we could make that would guide people through familiar FP concepts like lambdas, pair and sum types, etc. if they have never seen those things before.
_Originally posted by @byorgey in https://github.com/swarm-game/swarm/pull/663#discussion_r964883223_