Skip to content

GRIN: Graph Reduction Intermediate Notation, a strongly optimisable intermediate language for lazy functional languages

License

Notifications You must be signed in to change notification settings

spacekitteh/libgrin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tl;dr GRIN is a first order monadic (not a contradiction; lets are turned into binds) intermediate language for lazy functional programs (or any program based on non-integral pointers, really). it starts off very high level, (fairly close to standard intermediate languages like System F[C]) and gets transformed down to barely-above-assembly. this is possible because so much of the higher level constructs are basically mneumonics - e.g. closures/thunks are easily expressible in terms of low-level GRIN. this means a shitton of imperialist optimisations are available to be applied, and a shitton of unboxing/deforestation etc and interprocedural register allocation is possible

About

GRIN: Graph Reduction Intermediate Notation, a strongly optimisable intermediate language for lazy functional languages

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages