No easier to implement than arbitrary computational macros, but is: -- More powerful since it can access semantic information inferred by the compiler. -- Safer, since it automatically enforces hygiene and evaluation order by being based on function semantics. result type matching? Probably want mechanism for declaring functions flushable and foldable. defining arg-constant? arg-constant-value arg-type limited (and singleton?) accessors types-intersect/type-intersection