Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Pure functions model state nicely.

  compile :: Source -> Core
  optimizer :: Core -> Core
  nativeCode :: Core -> Assembly


Those 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.


Inside 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/Expre...

If you need to internally carry state, you just use a State monad to thread around the state purely.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: