Subject: Re: Lisp and OCaml
From: (Rob Warnock)
Date: Thu, 20 Sep 2007 22:21:45 -0500
Newsgroups: comp.lang.lisp
Message-ID: <>
are <> wrote:
| I have looked at Scheme and really liked it.  I wish I had been
| introduced to programming via Scheme.  But for my purposes, I find
| there are two major drawbacks:
|   1.  The formally defined language lacks some things I'd really like
| to have, like OO.  Of course you can roll your own, but that's not
| where I want to be spending my time.

Ditto, which is one of the reasons I switched from Scheme to CL.

| Or you can use a proprietary extension, like that in MzScheme,
| but I don't want to be locked into a single supplier.

After trying several other flavors, I *had* actually "settled on"
using MzScheme, mainly for it's performance [compared to the other
Scheme's I'd tried] and its clean FFI [MzScheme calls external
C code with a Tcl-like/shell-like "int argc, Scheme_Object **argv"
calling sequence] and support for runtime DSO lining. I had no
particular concerns myself about being "locked" to a "supplier",
since the code is in C and builds from scratch fairly easily.
I used MzScheme quite happily for a number of years.  [But...]

|   2.  From what I've seen Scheme is too slow, even if I'm not
| worried about factors of two in execution time.

MzScheme now comes with a compiler to C, "mzc", that speeds things
up somewhat. But the speed of compiled CL is certainly one of the
reasons I eventually "turned to the dark side" and embraced CL.

That, and getting tired of reinventing stuff all the time.

[And having a major app that I'd written in MzScheme v.50 break
horribly by a major change in internals that occurred circa
MzScheme v.103...]

Even with CL, you will probably find yourself "settling into"
a specific implementation of CL for most of your work. [I use
and like CMUCL. YMMV.] Don't worry about it.  The good news
is that if you *do* have to change implementations later, that
rather large portion of your code which was written to conform
to the ANSI Standard (a.k.a. CLHS) will probably "just work";
only the implementation-specific extension bits will have to change.
[And you kept those factored aside anyway... DIDN'T YOU?!?  ;-} ]


Rob Warnock			<>
627 26th Avenue			<URL:>
San Mateo, CA 94403		(650)572-2607