(define enter-choice -> (do (output “Choose: “) ((anon 1 -> (print hi) 2 -> (print why) 3 -> (print die)) (input)))) (define find-anon-funcs [anon | X] -> [[anon | X]] [X | Y] -> (append (find-anon-funcs X) (find-anon-funcs Y)) _ -> []) (define process-anon-macros Def [] -> Def Def Anons -> [package null [] | (replace-anon-calls Def Anons)]) (define replace-anon-calls Def [] -> [Def] Def [[anon | Rules] | Anons] -> (let F (gensym f) FDef [define F | Rules] NewDef (subst F [anon | Rules] Def) [FDef | (replace-anon-calls NewDef Anons)])) (defmacro anon-macro [define F | X] -> (process-anon-macros [define F | X] (find-anon-funcs [define F | X])))