From 08517705ce86a1a98b4a92b87986a907c5ac8f83 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Mon, 6 Dec 2021 13:41:08 -0700 Subject: [PATCH] Improve the ~ reader macro --- src/kiss/Reader.hx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/kiss/Reader.hx b/src/kiss/Reader.hx index 6310a22..ef59826 100644 --- a/src/kiss/Reader.hx +++ b/src/kiss/Reader.hx @@ -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)]);