YakshaLisp – Macros for Yaksha and Lisp Dialect
YakshaLisp – Macros for Yaksha and Lisp Dialect
YakshaLisp is a sub-language embedded in Yaksha compiler. Allowing you to do things like below (fizzbuzz). macros!{ (defun to_fb (n) (+ (if (== n 1) "" " ") (cond ((== 0 (modulo n 15)) "FizzBuzz") ((== 0 (modulo n 3)) "Fizz") ((== 0 (modulo n 5)) "Buzz") (true (to_string n)) ))) (defun fizzbuzz () (list (yk_create_token YK_TOKEN_STRING (reduce + (map to_fb (range 1 101)))))) (yk_register {dsl fizzbuzz fizzbuzz}) } def main() -> int: println(fizzbuzz!{}) return 0 This is available in latest release - https://github.com/YakshaLang/Yaksha/releases/tag/v0.0.4 (I recommend using release.py in compiler/scripts if you want to locally compile it) Few more examples: - embedding a text file macros! { (defun load_string (file) (list (yk_create_token YK_TOKEN_STRING (io_read_file (map_get file "value"))))) (yk_register {dsl load_string load_string}) } def main() -> int: println(load_string!{"test.txt"}) return 0 - importing a macro import import_me as magic def main() -> int: println(magic.counter!{}) println(magic.counter!{}) println(magic.counter!{}) return 0 Looking for ideas/advice/criticism :)
Share cardActual performance
Launch Intel predictions
Analyze your own launch →Incorrect prediction on native model
Similar products
Synesthesia – Optimizing brainfuck compiler implemented as Nim macros
YakshaLisp – Lisp dialect and macros for Yaksha lang
Zig's defer/errdefer for c99 and gnu11 C via macros
Phases, Scala macros for multiphase classes
8cc.cr – compile-time C compiler implemented as Crystal macros
Same-tbh – vim-like macros for bash
A set of dbg() macros for C
Unbug – Rust macros for programmatically invoking breakpoints
Clojure Macros – Lessons from unspoken symbols
Keysmith – Create macros for your Mac (and the web)