From ff4c7a34df346ddc27e0891ba20a288483547ec7 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 2 Dec 2020 14:19:15 -0700 Subject: [PATCH] Make aliases more flexible --- src/kiss/Helpers.hx | 4 ++-- src/kiss/Kiss.hx | 8 ++++---- src/kiss/Macros.hx | 8 +------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/kiss/Helpers.hx b/src/kiss/Helpers.hx index 2594ddfc..e009c85c 100644 --- a/src/kiss/Helpers.hx +++ b/src/kiss/Helpers.hx @@ -163,12 +163,12 @@ class Helpers { } // alias replacements are processed by the reader - public static function defAlias(k:KissState, whenItsThis:String, makeItThisInstead:String) { + public static function defAlias(k:KissState, whenItsThis:String, makeItThisInstead:ReaderExpDef) { // The alias has to be followed by a terminator to count! for (terminator in Reader.terminators) { k.readTable[whenItsThis + terminator] = (s:Stream) -> { s.putBackString(terminator); - Symbol(makeItThisInstead); + makeItThisInstead; } } } diff --git a/src/kiss/Kiss.hx b/src/kiss/Kiss.hx index c89b228c..cb9214ba 100644 --- a/src/kiss/Kiss.hx +++ b/src/kiss/Kiss.hx @@ -48,10 +48,10 @@ class Kiss { k.convert = readerExpToHaxeExpr.bind(_, k); // Helpful aliases - k.defAlias("print", "Prelude.print"); - k.defAlias("map", "Lambda.map"); - k.defAlias("filter", "Lambda.filter"); - k.defAlias("has", "Lambda.has"); + k.defAlias("print", Symbol("Prelude.print")); + k.defAlias("map", Symbol("Lambda.map")); + k.defAlias("filter", Symbol("Lambda.filter")); + k.defAlias("has", Symbol("Lambda.has")); while (true) { stream.dropWhitespace(); diff --git a/src/kiss/Macros.hx b/src/kiss/Macros.hx index 83884742..d06961b5 100644 --- a/src/kiss/Macros.hx +++ b/src/kiss/Macros.hx @@ -205,13 +205,7 @@ class Macros { whenItsThis; default: throw CompileError.fromExp(exps[0], 'first argument to defalias should be a symbol for the alias'); - }, switch (exps[1].def) { - case Symbol(makeItThis): - makeItThis; - default: - throw CompileError.fromExp(exps[1], 'second argument to defalias should be a symbol for what the alias becomes'); - }); - + }, exps[1].def); return null; };