See the thread here http://lists.gnu.org/archive/html/guile-user/2012-11/msg00032.html
In Guile 2.0.6 (define f (case-lambda* ((x #:optional y) 1) ((x #:key y) 2) ((x y #:key z) 3))) (f 1 2 #:z 3) -> Odd length of keyword argument list Also (define g (case-lambda* ((a #:key x) 1) ((a b c #:key x) 3))) (g 1 2 3) - > Invalid keyword This behavior doesn't seem useful and doesn't follow from the doc on case-lambda*, which is rather vague and lacks examples. The case-lambda* test in tree-il.test also fails on the REPL (let ((f (case-lambda* ((x #:optional y) 1) ((x #:key y) 2) ((x y #:key z) 3)))) (list (f 1) (f 1 2) (f #:y 2) (f 1 2 #:z 3))) -> Odd length of keyword argument list Thanks, Daniel