From: Yohanes Santoso Date: 2007-10-24T03:25:41+09:00 Subject: Re: Why don't we have "C" machines? Chad Perrin writes: > On Tue, Oct 23, 2007 at 01:29:16PM +0900, M. Edward (Ed) Borasky wrote: >> >> I'm not sure what "multi-paradigm" means, but Lisp 1.5, Common Lisp and >> Scheme are at their core functional languages based on the lambda >> calculus with "enough" imperative features, macros and side effects to >> get work done. An awful lot of Lisp (and Scheme) code has been written >> over the years, but it's still really Lisp 1.5 at heart. > > I think, in this context, "multi-paradigm" is intended to mean > functional, object oriented, imperative/procedural, and maybe even a > little declarative, all at once. > > >> >> You can almost get away with writing Lisp 1.5 in either Common Lisp or >> Scheme. Where you'll get thrown off is >> >> a. Lexical scoping. Both Common Lisp and Scheme are lexically scoped, >> but Lisp 1.5 was dynamic. >> b. There ain't no "evalquote" any more -- it's "read - eval - print". >> c. Scheme treats "nil" as true. > > Point C really throws me. I guess my Ruby bias is showing. Strictly speaking, Scheme does not have nil. It has empty list, (), which in other Lisps is also called nil. And, as in Ruby, an empty container, be it a list or an array, is evaluated as true in boolean context. The only false value in Scheme is #f. YS.