Sun Jan 2 14:52:35 EST 2011

Multiple interpretations in Scheme

What I find so useful about Haskell is type classes: it allows you
give multiple interpretations of the same type-level structure.

This is perfect for model + implementation co-design.

However, I have a vested interest in Racket (ex PLT Scheme).
I think it's time to make a decision about what to do with that.

To me it seems more valuable to go for Haskell as the main vehicle
because of market share, which has a huge effect on:

     * Code reuse:  more libraries for Haskell.

     * Finding developers: plenty of people want a Haskell job.

     * Experience as a side effect, useful for consulting.

What would keep me in Scheme?

     * Hackable.  Scheme is easier to abuse and I fear I'm going to
       run into less immediate trouble with my own bad design.
       Sometimes I just miss object identity.

     * Less type system distraction.  This is really like candy: might
       be better to not have it in the house in the first place.

The point being that if I stick to Racket, the tools will only be
in-house, and I don't get enough Haskell experience to be able to take
different contracts and get out of the C/C++ pit.

Maybe it's time to revive an old thread: how to specify the compiler
(optimizer) so it works both in Scheme and in Haskell.  This way at
least we have some extra redundancy in the place where it is necessary

Really, the answer shouldn't be either / or, but _both_.

Just need to fix the surface syntax problem.  I suppose Haskell can
deal with s-expressions just fine.