In the Introduction to the Language Lux :
Unlike most other lisps, Lux macros are monadic. A type (Lux a)is responsible for magic by streaming instances Compilerthrough macros. Macros must be of type Macroand then declared as macros.
(Lux a)
Compiler
Macro
Now I assume that this means that additional type checking information is available at compile time, giving you some feedback on the correctness of your code.
But what could be wrong with a macro that you might learn at compile time?
My question is: What does it mean if macros in Lisp are monadic?
With a cursory glance, it seems that both “normal” macros and reader macros are monodic in Lux.
Compiler . ( , gensym ing ) , , . Threading (.. , s -> (a, s), ) , s -> (a, s), s -> (b, s) a.
gensym
s -> (a, s)
s -> (b, s)
a
, - . - , , .