The "return a command" trick
This post illustrates a trick that I’ve taught a few times to minimize the “change surface” of a Haskell program. By “change surface” I mean the number of places Haskell code needs to be updated when adding a new feature.
Source: Haskell for all: The "return a command" trick, an article by Gabriella Gonzalez.