mirror of
https://github.com/kanaka/mal.git
synced 2024-09-19 09:38:28 +03:00
43 lines
721 B
Plaintext
43 lines
721 B
Plaintext
include "reader";
|
|
include "printer";
|
|
include "utils";
|
|
|
|
def read_line:
|
|
. as $in
|
|
| label $top
|
|
| _readline;
|
|
|
|
def READ:
|
|
read_str | read_form | .value;
|
|
|
|
def EVAL:
|
|
.;
|
|
|
|
def PRINT:
|
|
pr_str;
|
|
|
|
def rep:
|
|
READ | EVAL |
|
|
if . != null then
|
|
PRINT
|
|
else
|
|
null
|
|
end;
|
|
|
|
def repl_:
|
|
("user> " | _print) |
|
|
(read_line | rep);
|
|
|
|
def repl:
|
|
{continue: true} | while(
|
|
.continue;
|
|
try {value: repl_, continue: true}
|
|
catch
|
|
if is_jqmal_error then
|
|
{value: "Error: \(.)", continue: true}
|
|
else
|
|
{value: ., continue: false}
|
|
end) | if .value then .value|_display else empty end;
|
|
|
|
repl
|