(Arne Babenhauserheide)
2016-10-10: cleanup and simplify Speak-indirect. three-witches-space-in-name cleanup and simplify Speak-indirect.
diff --git a/examples/enter-three-witches.w b/examples/enter-three-witches.w --- a/examples/enter-three-witches.w +++ b/examples/enter-three-witches.w @@ -112,16 +112,19 @@ define-syntax Speak define-syntax Speak-indirect lambda (x) syntax-case x () - ;; Adjust name and lines for Speak - ;; input: (name1 name2 ... (word ...) ...) - : _ ((((name ...)))) ((lines ...)) - #` Speak (((name ...))) lines ... + ;; Adjust name and lines for Speak for the case where I + ;; cannot match for the whole name. + ;; input: (name1 name2 ... (word ...) ...) + + ;; grab the lines one by one from the back : _ ((lines ...)) symbols ... (lastline ...) #` Speak-indirect ((lines ... (lastline ...))) symbols ... + ;; start with the last line: create a deeply nested list as helper : _ symbols ... (lastline ...) #` Speak-indirect (((lastline ...))) symbols ... + ;; no more lines remain at the end: the rest must be the : _ ((lines ...)) name ... - #` Speak-indirect ((((name ...)))) ((lines ...)) + #` Speak (((name ...))) lines ... define-syntax Enter