Sticking Functions Where They Donʼt Belong
Summary
The article explains how to defunctionalize in Haskell by using typeclasses to embed behavior into pure data. It introduces an existential wrapper for typeclass dictionaries, demonstrates Semantics and ForeignSemantics, and provides code examples for implementing extensible, function-bearing data in a compiler-like AST, including a toy WASM backend and discussions of serialization limitations.