$ csi CHICKEN (c)2008-2010 The Chicken Team (c)2000-2007 Felix L. Winkelmann Version 4.6.0 macosx-unix-gnu-x86-64 [ 64bit manyargs dload ptables ] compiled 2011-03-04 on user1mbp.local (Darwin) ; loading /Users/user1/.csirc ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/readline.import.so ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/scheme.import.so ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/chicken.import.so ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/foreign.import.so ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/ports.import.so ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/data-structures.import.so ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/posix.import.so ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/readline.so ... #;1> (use matchable) ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/matchable.import.so ... ; loading /usr/local/Cellar/chicken/4.6.0/lib/chicken/5/matchable.so ... #;2> (define-for-syntax (blah a) (match a ['() `(list)] [(x y ...) `(list 1 2)])) Warning: the following toplevel variables are referenced but unbound: match (in blah) x (in blah) y (in blah) ... (in blah) #;3> ; how is match unbound? and x and y are pattern matching variables, how can they be expected to be bound? #;3> (blah '()) Error: unbound variable: match Call history: (blah (quote ())) (quote ()) (##core#quote ()) (blah (quote ())) [blah] (match a ((quote ()) (quasiquote (list))) ((x y ...) (quasiquote (list 1 2)))) <-- #;3>