On Jun 12, 2006, at 18:06, Christian Neukirchen wrote: > it's important to recognize that Scheme has > true first-class functions (being a Lisp-1), whereas there is a > fundamental difference between Blocks/Procs/lambdas and methods (being > a Lisp-2). This has slightly confused me, but I'll admit that it's been a while since I've dealt with this sort of thing, so jump in with corrections as required. - A language has first-class functions when a function can be assigned to variable, passed to or returned from another function, and so on. In Ruby, a = lambda { |x| x + 1 } for example. - The distinction between Lisp-1 and Lisp-2 that the latter has a separate namespace for functions, in Ruby, for example, def a(x) x + 1; end can exist alongside a = lambda { |x| x + 1 } (and there's a corresponding hoop to jump through to call the lambda). What I don't understand is how it follows that being in a different namespace implies that Lisp-2 doesn't have true first-class functions. The only reason I can think of is the circular one that "only Lisp-1 has true first-class functions", which gives it the distinct flavour of an age-old Lisp holy war (if that's the case, consider me uninterested). matthew smillie.