/ˈhæʃ/: Haskell + Scheme
An interpreter of a subset of Scheme written in Haskell
- REPL Session
call/cc
- Non-hygienic macros
$ cabal build
$ cabal exec hasche -- exec programs/hello.scm
# or
$ cabal exec hasche -- repl
define, define-macro, set!, lambda, if, quote, quasiquote, unquote, unquote-splicing, match
begin, when, unless, and, or, cond, let, let*, letrec, do
eval, apply
null?, pair?, boolean?, number?, string?, symbol?, procedure?
not
+, -, *, /, =, <, <=, >, >=
list?, car, cdr, cons, list, length, memq, last, append, set-car!, set-cdr!, caar, cadr, cdar, cddr, map, for-each
string-append, symbol->string, string->symbol, string->number, number->string
eq?, neq?, equal?
open-input-file, open-output-file, close-input-port, close-output-port, read, display, write, newline, load
call/cc, call-with-current-continuation
gensym
delay, force, delay-force, promise-done?
- Multiple values
- Tail call optimization
- Hygienic macro
- Exception handling