define-expression-macro defines a macro that expands into Coalton expression
syntax.
Syntax
(define-expression-macro name lambda-list
body ...)
Semantics
- It has the same expansion model as
cl:defmacro. - The macro body runs as Common Lisp and returns Coalton source forms.
- The macro is intended for use where a Coalton expression is expected.
- Coalton-aware REPLs may use this role to evaluate bare calls as Coalton expressions.
Example
(define-expression-macro if-some ((name expr) then else)
`(match ,expr
((Some ,name) ,then)
((None) ,else)))
(coalton
(if-some (x maybe-count)
(+ x 1)
0))