2 ms·
Pure functions model state nicely. compile :: Source -> Core optimizer :: Core -> Core nativeCode :: Core -> Assembly
by Peaker 13y ago
Pure functions model state nicely.
compile :: Source -> Core
optimizer :: Core -> Core
nativeCode :: Core -> Assembly
- seanmcdirmid 13y agoThose are just signatures, what is going on inside the boxes? Also, how does one encode iterative computation, like a data-flow analysis, in Haskell? And symbol tables? Is it sufficient that the symbol table is encapsulated within compile even if it involves dictionary read/writes? I'm genuinely curious.
- Peaker 13y agoInside the boxes, you might use a (State SymbolTable) monad to carry around the symbol table: type SymbolTable = Map String Symbol Me and a codeveloper are working on a type system in Haskell, where our current code has iterative computation, until it reaches a fixpoint. Here's the iterative code: https://github.com/Peaker/lamdu/blob/master/Lamdu/Data/Expression/Infer.hs#L286 https://github.com/Peaker/lamdu/blob/master/Lamdu/Data/Expre... If you need to internally carry state, you just use a State monad to thread around the state purely.