coeffects / consumer effects
See this neat interactive article for a high level explanation: http://tomasp.net/coeffects/
Coeffects or consumer effects describe requirements:
- purity e.g. like Recovering Purity with Comonads and Capabilities
- requirement to store past versions of variables
- external dependency requirement coeffect
- the context co-effect
- consumer choice
- surfacing semantic information about distributed behavior seems like a pretty good fit
- implementing metaprogramming as a coeffect
- perhaps, but not exactly sure if so yet, more general coalgebraic coeffects
- perhaps static-ness/reflectability makes a good co-effect; e.g. thinking of the difference between
dynamicReadFile :: k FilePath StringandstaticReadFile :: FilePath -> k () String. Maybe in a language with arrows for all function arguments, a coeffect on a parameter could specify whether the argument is consumed dynamically or statically