On Sun, 2009-07-05 at 02:09 +0300, Abdulaziz Ghuloum wrote: > On Jul 5, 2009, at 1:55 AM, Derick Eddington wrote: > > > E.g.: > > (define/kw (f (a :default 1) . r) (list a r)) > > (define (make-kw) (:- a)) > > (f (make-kw) 2) > > => (1 (#[keyword a] 2)) > > ((values f) (make-kw) 2) > > => (2 ()) > > is inconsistent and doesn't seem acceptable. > > > And to make them consistent, you're going to choose which one > to be the "right" one and which one to be the "bad"?
If run-time processing (lambda/kw and first-class ability) is going to exist, it seems like it should be considered the "right" one because it unavoidably has to recognize values, and it's not possible to enforce a prohibition against giving keywords which are not created using (:- ---) at the immediate call-site, and I like the philosophy of "do not prohibit what you cannot enforce". I'm definitely interested in different perspectives on this issue. -- : Derick ----------------------------------------------------------------
