mirror of
https://github.com/kanaka/mal.git
synced 2024-10-27 14:52:16 +03:00
8a19f60386
- 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.
46 lines
646 B
D
46 lines
646 B
D
import std.stdio;
|
|
import std.string;
|
|
import readline;
|
|
import reader;
|
|
import printer;
|
|
import types;
|
|
|
|
MalType READ(string str)
|
|
{
|
|
return read_str(str);
|
|
}
|
|
|
|
MalType EVAL(MalType ast)
|
|
{
|
|
return ast;
|
|
}
|
|
|
|
string PRINT(MalType ast)
|
|
{
|
|
return pr_str(ast);
|
|
}
|
|
|
|
string rep(string str)
|
|
{
|
|
return PRINT(EVAL(READ(str)));
|
|
}
|
|
|
|
void main()
|
|
{
|
|
for (;;)
|
|
{
|
|
string line = _readline("user> ");
|
|
if (line is null) break;
|
|
if (line.length == 0) continue;
|
|
try
|
|
{
|
|
writeln(rep(line));
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
writeln("Error: ", e.msg);
|
|
}
|
|
}
|
|
writeln("");
|
|
}
|