#!/usr/bin/env sh exec guile -L $(dirname $(dirname $(realpath "$0"))) --language=wisp -e '(@@ (examples enter-three-witches) main)' -s "$0" "$@" ; !# define-module : examples enter-three-witches use-modules : ice-9 optargs define-syntax Enter syntax-rules () : _ (name) b ... begin define-syntax name syntax-rules ::: () : _ (c :::) d ::: format #t "~A\n ~A\n\n" string-join string-split (symbol->string 'name) #\_ string-join map : lambda (x) (string-join (map symbol->string x)) quote : (c :::) d ::: . "\n " : _ c d ::: ;; allow for modifier keywords after the name begin format #t "~A:\n" : symbol->string 'c name d ::: : _ c ::: begin #t c ::: Enter b ... : _ b ... begin define : main args Enter : First_Witch Second_Witch Third_Witch First_Witch When shall we three meet again In thunder, lightning, or in rain? Second_Witch When the hurlyburly's done, When the battle's lost and won. Third_Witch That will be ere the set of sun.