[Haskell-cafe] Picking an architecture for a Haskell web app

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Thu May 10 12:27:43 EDT 2007


On May 10, 2007, at 12:14 , Andrew Coppin wrote:

> I can see it's GHC-specific, what I was asking is does the computer  
> than runs the final program need to have GHC installed. Presumably  
> is does if it's going to compile files on the fly. What about if it  
> only loads *.o files that are already compiled? Is GHC still  
> required? (Not that the answer worries me greatly; I'm just curiose.)

You would need the object files and archives comprising the Haskell  
runtime, and you'd need to run a ghc link in verbose mode to figure  
out how to use them and write a script to do the link.

> Wait a sec... Are you trying to tell me that it is *faster* to take  
> the source, type check it, convert it to Core, perform 25,000 Core- 
> to-Core transformations, convert Core to C, call GCC, link the  
> result together, dynamically load it, execute it, extract the  
> result and confirm that it type checks, and display it....... then  
> it is to just directly execute an interpreted expression? I find  
> that highly surprising.

It's pretty fast, actually.  But your interactive expression still  
needs to do most of that, except it compiles cmm to bytecode instead  
of to C (old default; handed off to gcc afterward) or directly to asm  
(modern ghc).  In particular, you are doing both core transformations  
and type checking no matter what --- and they take *far* more time  
than the compile and link.  Truly.

Plus, consider that people often throw extensions at lambdabot --- do  
you support even simple stuff like forall in your interpreter?  Using  
ghc means you can use most of the ghc extensions.

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH




More information about the Haskell-Cafe mailing list