diff --git a/src/kiss/Kiss.hx b/src/kiss/Kiss.hx index d5c2761..78a9acc 100644 --- a/src/kiss/Kiss.hx +++ b/src/kiss/Kiss.hx @@ -58,6 +58,7 @@ class Kiss { "zip" => Symbol("Prelude.zip"), "pairs" => Symbol("Prelude.pairs"), // TODO test pairs "memoize" => Symbol("Prelude.memoize"), // TODO test memoize + "symbolName" => Symbol("Prelude.symbolName"), "map" => Symbol("Lambda.map"), "filter" => Symbol("Lambda.filter"), // TODO use truthy as the default filter function "has" => Symbol("Lambda.has"), diff --git a/src/kiss/Prelude.hx b/src/kiss/Prelude.hx index bd3d288..57cf5d6 100644 --- a/src/kiss/Prelude.hx +++ b/src/kiss/Prelude.hx @@ -277,6 +277,14 @@ class Prelude { return v; } + // ReaderExp helpers for macros: + public static function symbolName(s:ReaderExp):ReaderExpDef { + return switch (s.def) { + case Symbol(name): StrExp(name); + default: throw 'expected $s to be a plain symbol'; + }; + } + #if sys private static var kissProcess:Process = null; #end