
Parsing a very close approximation to what Haskell specifies isn't that hard. You just need some mild interaction between the parser and lexer. Executing Haskell is more difficult, since you can't execute Haskell without first doing type checking. -- Lennart On Thu, 10 May 2007, Andrew Coppin wrote:
Date: Thu, 10 May 2007 17:59:38 +0100 From: Andrew Coppin
To: haskell-cafe@haskell.org Subject: Re: [Haskell-cafe] Picking an architecture for a Haskell web app No, you can do the GHCi trick, converting it to Core, perform a small number of Core-to-Core transformations, convert it to bytecode, interpret the bytecode. Compare this to the programmer time to implement directly executing an interpetted expression, and it starts to get complex.
One of the things on the long list of questions I haven't got round to asking yet is "is there some library that lets you execute arbitrary Haskell code from a string?" Clearly GHCi manages to do it without difficulty. Apparently hs-plugins allows this too, but... surely this is a sledgehammer to crack a nut? A Haskell program is just a set of graph rewrite rules, after all...
Also remember that evaluating an expression in Haskell is _really_ hard!
Really? Looks pretty damn simple to me...
The value depends on the types, there is loads of sugar, loads of libraries etc. A Haskell compiler is a very hard thing to write, an interepretter doesn't save much of that complexity.
Oh, yeah, well, definitely the hardest part is *parsing* Haskell. In particular, the fact that layout exists makes this problem essentually unsolvable. If I could figure out how to parse Haskell, executing it wouldn't be too hard. (Unless you wanted it to actually be capable of running *arbitrary* programs - ones that use FFI, concurrency, mutable state, exceptions, graphics, etc. Or if you want it to be *efficient*. If you just want to be able to run pure functional code and have it produce a correct result, that's quite easy.)
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Lennart