Support both strict (eager) and lazy execution. Higher kinded support. Integrate with pattern matching support