I sure wish Clojure would generate "IllegalArgumentException" in the 
following sample case:

(defn foo [a b & {:keys [c d]}] 1)
(foo 1 2 :e 5) ; blithely ignores :e 5

I understand that Clojure's destructuring things are very nice, and more 
powerful than Common Lisp's, and I like
that when I need it.

However I can't tell you how many times I've been bitten by this. Some 
simple typo or other other parameter name error on keyword arguments
with untended and way-too-long-to-debug consequences.

In my mind, on this subject, Common Lisp lambda lists got this right and 
Clojure gets a poor grade.
Something about being doomed to repeat history.  In Common Lisp, if you 
really wanted to allow other (arbitrary) keywords you'd
just use &allow-other-keys.  

Maybe clojure should only allow the above case to go un-complained-about if 
:as was specified for the map.

If there's some automatic enforcement I'm missing that comes with 'defn' 
please let me know, I'm still learning the language.

I've thought more that once about making a common lisp DEFUN statement that 
maps to DEFN but implements
lambda list semantics (including 'supplied-p' parameters).  I've just been 
too lazy to do it.  

It would also likely perform poorly after injecting the additional 
checks/rearrangements into the function on top of what Clojure has already 
done,
so I suppose it would have to be taken a step further so that it didn't 
generate DEFN expressions at all but was implemented at DEFN's level as 
a seperately named form.

Tips welcome.  Just thinking aloud.

- Dave

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to