(message (Hello 'Paul) (you :wrote :on '(09 Dec 2006 01:01:14 -0800)) ( PR> If Common Lisp didn't have lexically scoped variables (most Lisp PR> dialects before Scheme didn't have them) then it would be very PR> difficult to add that with macros.
i think there's some way to hack that. for example, make defun a macro that will collect all lexically scoped variable and mangle them. for example: (defun foo () (let ((i 1)) (print i))) will be transformed to (defun foo () (let ((i_foo 1)) (print i_foo))) (or just some random suffix). this way variables in different functions will never collide. maybe there's a catch somewhere, but that should look very close to lexical variables. PR> Do you seriously think lexical scoping is the last word in language PR> features and that there's now nothing left in other languages that PR> can't straightforwardly be done in CL? Hint: PR> call-with-current-continuation (also known as call/cc). there's nothing impossible :) we even have a lib for nondeterministic calculations -- Screamer, that's much much more cool than that call/cc.. (defun pythagorean-triples (n) (all-values (let ((a (an-integer-between 1 n)) (b (an-integer-between 1 n)) (c (an-integer-between 1 n))) (unless (= (+ (* a a) (* b b)) (* c c)) (fail)) (list a b c)))) you define ranges for variables, define constraints (in a form very close to normal lisp code) and then just say -- all-values, or solutions (first thing that satisfies constaints). ) (With-best-regards '(Alex Mizrahi) :aka 'killer_storm) "People who lust for the Feel of keys on their fingertips (c) Inity") -- http://mail.python.org/mailman/listinfo/python-list