Running this. (define f (case-lambda* ((x #:optional y) 1) ((x #:key y) 2) ((x y #:key z) 3)))
(f 1 2) (f #:y 2) (f 1 2 #:z 3) I get. Backtrace: In ice-9/boot-9.scm: 157: 7 [catch #t #<catch-closure 8f15df0> ...] In unknown file: ?: 6 [apply-smob/1 #<catch-closure 8f15df0>] In ice-9/boot-9.scm: 63: 5 [call-with-prompt prompt0 ...] In ice-9/eval.scm: 414: 4 [eval # #] In ice-9/boot-9.scm: 2131: 3 [save-module-excursion #<procedure 8ed31c0 at ice-9/boot-9.scm:3660:3 ()>] 3667: 2 [#<procedure 8ed31c0 at ice-9/boot-9.scm:3660:3 ()>] In unknown file: ?: 1 [load-compiled/vm "/home/german/.cache/guile/ccache/2.0-LE-4-2.0/home/german/Escritorio/test.scm.go"] In /home/german/Escritorio/./test.scm: 3: 0 [f 1 #<undefined> 2 #:z 3] /home/german/Escritorio/./test.scm:3:10: In procedure f: /home/german/Escritorio/./test.scm:3:10: In procedure #<procedure f (x #:optional y) | (x #:key y) | (x y #:key z)>: Odd length of keyword argument list But there is one interest line 3: 0 [f 1 #<undefined> 2 #:z 3] What mean this? That is taking the second argument as a keyword?