[racket] Common Lisp or Racket?

From: Tomasz Rola (rtomek at ceti.pl)
Date: Tue Nov 12 21:12:59 EST 2013

On Tue, 12 Nov 2013, Hendrik Boom wrote:

> On Tue, Nov 12, 2013 at 10:56:09AM -0600, Lawrence Bottorff wrote:
> > I'm your typical newbie who is hand-wringing over what direction to go in
> > the general functional programming world. Lisp, Scheme, or Haskell?
> > 
[...]
> > 
> > I understand that Barski is slavishly following the "let's get real stuff
> > done" philosophy, but I'm not up to speed with functional yet to even know
> > what's going on. Is your "Realm of Racket" better at this? I feel like I'm
> > spinning my wheels at this point. . . .
> > 
> > LB
> 
> I should mention that another, quite different approach to functional 
> programming is the language OCAML.  See http://ocaml.org/ for details.
> 
> I program using Scheme and OCAML as high-level languages.

I may be very much wrong, so I cowardly apologise in advance, but I 
happened to subscribe to certain Haskell related NGs just in time to 
witness, kind of, interesting exchange there. In short, some 
incompatibilities were introduced into ghc (AFAIR) and this rendered some 
(a lot?) of working code uncompilable. I did not follow it to the very 
end, because at one point I simply lost interest. The tone I remember was 
"what, they can't update their code to agree with new compiler - too bad, 
let's drop the ballast and move on". My conclusion was, Haskell was still 
in the making. So if I decided to use it, I should be prepared to rewrite 
my code from time to time. And this is exactly the thing I hate - I hate 
rewriting the code, be it from one language to another "cooler" language 
or from dialect to dialect or from one program fragment to another. I 
really appreciate attitude of gcc compiler, which, at least in theory, 
allows me to compile very old code without a problem [1].

I'm not sure if Ocaml is more like gcc or more like ghc, but I decided to 
learn it rather than H*.

As of Racket vs CL, I think they are very comparable, with CL's one leg 
stuck in prehistory (the filesystem concept scared the bejesus out of me, 
almost) and Racket being modern and a bit alien to me, who licked (shyly) 
Dybvig's book in times of R4RS... But, the docs are great, so I can 
actually fire up drracket, google for some pointers in the docs and write 
code in, say, quarter hour or a few. Batteries included, thanks a lot for 
them :-). So for a beginner, Racket is a very good choice. Ability to use 
some Scheme introductory material, complete with real R5RS mode (it is 
fully compatible, isn't it :-) ), is great bonus, because it allows for 
more choices - I am trying to tutor my sister (already graduated, so 
English and logic is not a problem), and the choice of first intro book to 
programming is crucial. SICP have just been toppled down, now I am on the 
look again :-).

(OTOH, I'm not sure if I'd want to write compiler in Racket. Maybe. For a 
while, I want to use both CL and R* and see what happens.)

> By the way, I don't do exclusively pure functional programming.  Most 
> of my code is functional, but I use imperative mechanisms when 
> apppropriate.  I consider that building real systems as pure 
> functional code is extremism bordering on masochism.

Yes. One more reason to rethink using Haskell, I guess... Pure functional 
looks cool in theory and blogs but in every day get-stuff-done it might be 
not so cool and pure anymore, at least in my case. Besides, I understand 
that the need for monads makes it dirty functional. So I play it safe. Of 
course I don't mean Haskell is bad or wrong choice. It just is not the 
best choice for every problem, but I guess I will learn it, some time 
later.

[1] I wanted to quickly prove it with some code I downloaded in 1995, but 
gcc complained about "redefined identifiers" and stuff, so in practice 
some rewriting is required here, too (yes, I gave it "-ansi" but maybe 
there is some more options to experiment with, maybe I will).

Regards,
Tomasz Rola

--
** A C programmer asked whether computer had Buddha's nature.      **
** As the answer, master did "rm -rif" on the programmer's home    **
** directory. And then the C programmer became enlightened...      **
**                                                                 **
** Tomasz Rola          mailto:tomasz_rola at bigfoot.com             **

Posted on the users mailing list.