diff --git a/kiss/src/kiss/Kiss.hx b/kiss/src/kiss/Kiss.hx index d5c27615..78a9acc9 100644 --- a/kiss/src/kiss/Kiss.hx +++ b/kiss/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/kiss/src/kiss/Prelude.hx b/kiss/src/kiss/Prelude.hx index bd3d2881..57cf5d65 100644 --- a/kiss/src/kiss/Prelude.hx +++ b/kiss/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