Monadic operator M
f M is the same as f but may keep a record of the arguments and results for reuse.
It is commonly used for multiply-recursive functions.