diff --git a/kiss/src/kiss/KissInterp.hx b/kiss/src/kiss/KissInterp.hx index 7c9ae596..fabc6fc7 100644 --- a/kiss/src/kiss/KissInterp.hx +++ b/kiss/src/kiss/KissInterp.hx @@ -27,6 +27,7 @@ class KissInterp extends Interp { this.nullForUnknownVar = nullForUnknownVar; variables.set("Reflect", Reflect); + variables.set("Type", Type); variables.set("Prelude", Prelude); variables.set("Lambda", Lambda); variables.set("Std", Std); diff --git a/projects/kiss-spaced-rep/src/kiss_spaced_rep/KSR.kiss b/projects/kiss-spaced-rep/src/kiss_spaced_rep/KSR.kiss index 1ac256b2..a1e08c8b 100644 --- a/projects/kiss-spaced-rep/src/kiss_spaced_rep/KSR.kiss +++ b/projects/kiss-spaced-rep/src/kiss_spaced_rep/KSR.kiss @@ -164,4 +164,16 @@ ("?" (elements.push (b.str line))) ("" (break)) (otherwise (throw "bad element for a cloze sequence: $line"))))) - `(cloze ,@elements))) \ No newline at end of file + `(cloze ,@elements))) + +(defMacroFunction btDefault [exp] + (case (Type.enumConstructor exp.def) + ("StrExp" + `(basicText ,exp)) + (otherwise exp))) + +(defReaderMacro "=>" [stream] + `(card ,(btDefault (read stream)) ,(btDefault (read stream)))) + +(defReaderMacro "<=>" [stream] + `(reversed ,(btDefault (read stream)) ,(btDefault (read stream))))