Marshall wrote: > Joe Marshall wrote: > > Looking back in comp.lang.lisp, I see these examples: > > > > (defun noisy-apply (f arglist) > > (format t "I am now about to apply ~s to ~s" f arglist) > > (apply f arglist)) > > > > (defun blackhole (argument) > > (declare (ignore argument)) > > #'blackhole) > > > > But wait a sec. It seems that these were examples I invented in > > response to the same question from you! > > Ah, how well I remember that thread, and how little I got from it. > > My memories of that thread are > 1) the troll who claimed that Java was unable to read two numbers from > standard input and add them together. > 2) The fact that all the smart people agreed the blackhole > function indicated something profound. > 3) The fact that I didn't understand the black hole function. > > The noisy-apply function I think I understand; it's generic on the > entire arglist. In fact, if I read it correctly, it's even generic > on the *arity* of the function, which is actually pretty impressive. > True?
Yes. > This is an issue I've been wrestling with in my own type > system investigations: how to address genericity across arity. > > Does noisy-apply get invoked the same way as other functions? > That would be cool. Yes, but in testing I found an incompatability. Here's a better definiton: (defun noisy-apply (f &rest args) (format t "~&Applying ~s to ~s." f (apply #'list* args)) (apply f (apply #'list* args))) CL-USER> (apply #'+ '(2 3)) 5 CL-USER> (noisy-apply #'+ '(2 3)) Applying #<function + 20113532> to (2 3). 5 The internal application of list* flattens the argument list. The Common Lisp APPLY function has variable arity and this change makes my NOISY-APPLY be identical. > As to the black hole function, could you explain it a bit? It is a function that takes any argument and returns the function itself. > I apologize > for my lisp-ignorance. I am sure there is a world of significance > in the # ' on the third line, but I have no idea what it is. The #' is a namespace operator. Since functions and variables have different namespaces, I'm indicating that I wish to return the function named blackhole rather than any variable of the same name that might be around. -- http://mail.python.org/mailman/listinfo/python-list