- Eliminates need for intermediate memory
- All shareable computations are shared (even inside partial function applications)
- Efficient memory management via dup nodes
- lazy clone instead of copying, faster and avoids uneccessary work
- More precise types means more precise memory management
- enables auto SIMD (instruction parallelisation)
- Permits simpler efficient algorithms
- Better libraries handling fusion and correcting historic mistakes
- All function arguments are guaranteed to subtype their expected type
- Fully expressive types allows to guarantee any condtions at compiletime
- type annotations aren't required
- subtypes are more precise then predeclared ones