define* is a bit confusing in that it simply ignores invalid arguments:

/home/bil/cl/ guile
guile> (use-modules (ice-9 optargs))
guile> (define* (ho #:key a b) (list a b))
guile> (ho 1 2)
(#f #f)
guile> (ho 1 2 3 4 5)
(#f #f)
guile> (ho 1 2 3 #:a 1)
(1 #f)


In Lisp, this gives an eror:


USER(1): (defun ho (&key a b) (list a b))
HO
USER(2): (ho 1 2)
Error: 1 not a legal keyword arg.
  [condition type: PROGRAM-ERROR]

Restart actions (select using :continue):
 0: Ignore it.
[1c] USER(3): :exit
; Exiting Lisp





_______________________________________________
Bug-guile mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-guile

Reply via email to