[Haskell] Re: [Haskell-cafe] Haskell versus Lisp

Wolfgang Jeltsch wolfgang at jeltsch.net
Mon Sep 19 09:22:02 EDT 2005


Am Freitag, 16. September 2005 16:46 schrieben Sie:
>   . . .
>
> > In Haskell, code is data too because code in the sense of imperative
> > actions is described by IO values.  You cannot analyse them.  But you can
> > use your do expressions etc. to construct action descriptions with a more
> > general type like MonadIO m => m a.  Then you can instantiate m with a
> > monad whose values store part of the action's structure so that this
> > information can be used later.  Or you use a monad which doesn't keep
> > structural information to use it for later processing but which does the
> > processing upon construction.
>
> But, isn't this like saying that Java or C++ supports first-class
> function types because you can define a class with one method, the
> function of interest, and then create, pass, and return instances of the
> class?  Yeah, you can do that, but it's awfully clumsy.

But I could imagine that doing what I described in Haskell is not awfully 
clumsy.  In fact, I don't like the idea of dealing with code at run-time, 
except when it is absolutely necessary.

> Also, it seems to me that the heart of Haskell is functional, not
> imperative.  Can you create function definitions from data and evaluate
> them at runtime?

Of course!  Just define a function which takes an expression as an argument 
and returns the corresponding function, i.e., some kind of function parser.

> [...]

>  -- Bill Wood
>     bill.wood at acm.org

Best wishes,
Wolfgang


More information about the Haskell-Cafe mailing list