Lisp macros seem a lot easier than extensible effects... as for maximum type safety and flexibility well you can always use the source code of your functions / macros itself as its type... When you look up a type it'll show only the top level expression only (the expression at the bottom of let..in and the top of your where clauses), but you can expand it (assuming IDE or advanced shell) by clicking (+) next to the transform. You can use relational equation solving like Prolog to invert the source code into the type of each argument and return value.
Пікірлер: 3