Sven Panne wrote:
> 

>    * If you upgrade your version of GHC, its libraries change in such a
>      way that you have to recompile all your code: A compiler-generated
>      entity (ds42, lvl1, tpl60, ...) from one version can mean quite a
>      different thing in the next. Compare this with C libs: You don't have
>      to completely re-install your whole *nix after switching to another
>      C compiler. I'm not sure if things are better with nhc13 or hbc, but
>      I fear they are not.

This is also partly true for c++ compilers.  C compiles have a VERY
simple symbols which is simply a name.   More advanced languages have
complex symbols that store additional necessary information.  C++ stores
type information in the symbol to resolve overloading.  Ghc might do a
similar thing.  Than again Haskell overloading is nothing like C++
overloading so maybe not.

> 
>    * Libraries differ vastly between systems, although there is some hope
>      for Hugs/GHC.

The trick here is to have free portable libraries that can compile under
any valid Haskell compiler so that if you need something simply include
the library with your program.

> 
> After these remarks here are my pleas:
> 
>    * Implementors: Write a Haskell-aware preprocessor. Include details
>      about it in the next language report. A preprocessor-free and at
>      the same time evolving language is a dream, but nothing more. In
>      the meantime, at least make your systems agree on the preprocessor
>      constants (see above).

I have a better idea.  Have a pragma to allow the preprocessing to be
done my some arbitrary haskell function.  An optional module may be
specified.  The function should have the signature of 
String -> String -> [String] -> String.  The First string is the actual
file, the second string is the name of the file being processed, the
third is a list of preprocess options from the command line and the
Output is the processed file.  The pragma should look something like
this 
{-# pre <haskell function> #-} or {-# prewModule <module name> <haskell
function> #-}.  Because the actual text may not a valid haskell program
it should look for this string anywhere within the first 5 lines of the
file.  The function naturally should be totally independent from the
rest of the file.  If no preprocess is specified use a default one. 
This will allow different styles of literate programing to be used with
out any additional fuss amoung other things.
> 
>    * The Haskell 98 libraries are nice, but by no means sufficient.
>      A quick(!) agreement on libs to include in every system is necessary,
>      because languages live and die with libraries. Compare Scheme and Java:
>      Scheme's approach to "get everything right the first time" has lead
>      to a crawling development (How many changes between R^4RS and R^5RS?
>      Any standardized and non-trivial libs out there?). The Java hype on
>      the other hand can mainly be attributed to the enormous availability
>      of standard libs.

See my above note.

-- 
Kevin Atkinson
[EMAIL PROTECTED]
http://metalab.unc.edu/kevina/


Reply via email to