mirror of
https://github.com/kanaka/mal.git
synced 2024-09-11 21:57:38 +03:00
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
37 lines
815 B
Plaintext
37 lines
815 B
Plaintext
(de load-relative (Path)
|
|
(load (pack (car (file)) Path)) )
|
|
|
|
(load-relative "readline.l")
|
|
(load-relative "types.l")
|
|
(load-relative "reader.l")
|
|
(load-relative "printer.l")
|
|
|
|
(de READ (String)
|
|
(read-str String) )
|
|
|
|
(de EVAL (Ast)
|
|
Ast)
|
|
|
|
(de PRINT (Ast)
|
|
(pr-str Ast T) )
|
|
|
|
(de rep (String)
|
|
(PRINT (EVAL (READ String))) )
|
|
|
|
(load-history ".mal_history")
|
|
|
|
(use Eof
|
|
(until Eof
|
|
(let Input (readline "user> ")
|
|
(if (=0 Input)
|
|
(setq Eof T)
|
|
(let Output (catch 'err (rep Input))
|
|
(if (isa '+MALError Output)
|
|
(let Message (MAL-value Output)
|
|
(unless (= (MAL-value Message) "end of token stream")
|
|
(prinl "[error] " (pr-str Message)) ) )
|
|
(prinl Output) ) ) ) ) ) )
|
|
|
|
(prinl)
|
|
(bye)
|