Chris Uppal wrote: > E.g. can you add three-way comparisons (less-than, same-as, greater-than to, > say, Python with corresponding three-way conditional control structures to > supplement "if" etc ? Are they on a semantic and syntactic par with the > existing ones ? In Smalltalk that is trivial (too trivial to be particularly > interesting, even), and I presume the same must be true of Lisp (though I > suspect you might be forced to use macros).
As an illustration, here's the definition and usage of such a numeric-if in Lisp. Using raw lambdas, it's ugly, but doable: (defun fnumeric-if (value lt-body eq-body gt-body) (cond ((< value 0) (funcall lt-body)) ((= value 0) (funcall eq-body)) ((> value 0) (funcall gt-body)))) (fnumeric-if (- a b) (lambda () (print "a < b")) (lambda () (print "a = b")) (lambda () (print "a > b"))) A macro helps clean that up and make it look prettier: (defmacro numeric-if (value lt-body eq-body gt-body) `(fnumeric-if ,value (lambda () ,lt-body) (lambda () ,eq-body) (lambda () ,gt-body))) (numeric-if (- a b) (print "a < b") (print "a = b") (print "a > b")) -- MJF -- http://mail.python.org/mailman/listinfo/python-list