Improve the ~ reader macro

This commit is contained in:
2021-12-06 13:41:08 -07:00
parent 736245f7db
commit 08517705ce

View File

@@ -76,7 +76,12 @@ class Reader {
readTable["!"] = (stream:Stream, k) -> CallExp(Symbol("not").withPos(stream.position()), [assertRead(stream, k)]);
// Helpful for quickly debugging an expression by printing the value:
readTable["~"] = (stream:Stream, k) -> CallExp(Symbol("print").withPos(stream.position()), [assertRead(stream, k)]);
readTable["~"] = (stream:Stream, k) -> {
var pos = stream.position();
var expToPrint = assertRead(stream, k);
var expToPrintRepresentation = StrExp(Reader.toString(expToPrint.def)).withPos(pos);
CallExp(Symbol("print").withPos(pos), [expToPrint, expToPrintRepresentation]);
}
// Helpful for defining predicates to pass to Haxe functions:
readTable["?"] = (stream:Stream, k) -> CallExp(Symbol("Prelude.truthy").withPos(stream.position()), [assertRead(stream, k)]);