Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: YakshaLisp – Macros for Yaksha and Lisp Dialect (yakshalang.github.io)
5 points by JaDogg on July 31, 2023 | hide | past | favorite
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 :)


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: