Skip to content

Instantly share code, notes, and snippets.

@kamil-adam
Forked from fumieval/lazy.scm
Created September 4, 2023 16:11
Show Gist options
  • Save kamil-adam/a71bbd3710bebddb819c972732403071 to your computer and use it in GitHub Desktop.
Save kamil-adam/a71bbd3710bebddb819c972732403071 to your computer and use it in GitHub Desktop.
Lazy K (unlambda style) interpreter for lazier
(load "lazier.scm")
(load "prelude.scm")
(load "prelude-numbers.scm")
(lazy-def '(main input) '(parse-unlambda i input))
(lazy-def 'parse-unlambda
'((lambda (x) (x x))
(lambda (self cont input)
((nth (car input) dispatch-list) (self self) cont (cdr input)) )))
(lazy-def 'dispatch-list
'((96 (cons (lambda (parse cont input) (parse cont input))))
(cons (lambda (parse cont) (parse (lambda (f1) (parse (lambda (f2) (cont (f1 f2)))))))
((8 (cons (lambda (parse cont input) (parse cont input))))
(cons (lambda (parse cont) (cont i))
((1 (cons (lambda (parse cont input) (parse cont input))))
(cons (lambda (parse cont) (cont k))
((7 (cons (lambda (parse cont input) (parse cont input))))
(cons (lambda (parse cont) (cont s))
(list-of (lambda (parse cont input) (parse cont input))))))))))))
(print-as-unlambda (laze 'main))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment