3 ms·
Thank you (sorry for the late reply)! The macro system is not strongly-typed in the sense that Template Haskell is: you can totally use a macro to create inval
by BalinKing 7y ago
Thank you (sorry for the late reply)!
The macro system is not strongly-typed in the sense that Template Haskell is: you can totally use a macro to create invalid Axel code. _However_, the resulting transpiled Haskell code will then fail to compile, so mistakes are still caught at compile-time. (There's no runtime code generation (at least not yet), since all macro expansion happens at compile-time.) I hope this makes sense; I'm not 100% sure what the right terminology is to be honest.
You called it, I'm basically just using `Either` for error-handling (well, the equivalent version in the Polysemy library). It's basically like `EitherT`, except IMHO more ergonomic. However, since I'm using the transformer version, I'm just exiting the entire program on an error and printing an error message.
Regarding Racket, I hope you don't mind if I quote myself (from https://github.com/axellang/axel/wiki/Why-Axel%3F https://github.com/axellang/axel/wiki/Why-Axel%3F):
> Axel was originally inspired by the excellent Hackett project, which adds Haskell's semantics to Racket's syntax and ecosystem. Axel is the "opposite" of Hackett, so to speak, in that it adds Lisp's syntax to Haskell's semantics and ecosystem. Axel tries to make the migration from Haskell as seamless as possible: You can gradually migrate a Haskell project to Axel if that works best for your project; Axel can (soon) auto-convert a Haskell project or file to the corresponding Axel syntax; etc. If you really love Racket (its libraries, hygenic macro system, etc.), however, Hackett's an excellent choice.