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/