[Yhc] Yhc (and Catch?) bugs

Neil Mitchell ndmitchell at gmail.com
Mon Aug 6 17:11:02 EDT 2007


Hi

> I had _successfully_ run Catch before
> with an earlier, buggier version of my code and got no useful
> information, but I figured I'd try again...
>
> ]catch IntegerInTermsOfInt.hs
> Executing: IntegerInTermsOfInt.hs
> Compiling
> Compiling IntegerInTermsOfInt ( IntegerInTermsOfInt.hs )
> Loading Core for YHC.Internal
> Linking...
> catch: user error (invalid binary data found)

> In case it makes a difference, I've compiled and installed latest
> Yhc-darcs, and Catch-0.1.1

This is the problem, Catch has a copy of the Yhc libraries, and since
this morning me and Tom have changed the binary format for Yhc.Core -
which means that Catch won't work with Yhc. Both Catch-darcs and
Catch-0.1.1 are both broken with respect to the new library
interfaces.

I will come back and fix up Catch in a short while, but am working on
another project at the moment, and am a little busy. If you (or anyone
else) has a strong pressing need for Catch, then I may be able to hack
it back up quickly, otherwise I'd like to take my time and get a very
polished Catch-0.2 out.

> -- Bug: the "--_" sequence isn't considered to begin a comment by Yhc.
> --  I had to put a space between them. Try either of these lines and see the
> --  ridiculous incorrect errors they create:
> --     --_ `fd` dsjfkl = dfjs
> --     --_ `fd` dsjfkl =

That seems like a nhc shared bug, probably in the lexer. I suspect its
a moments Haskell foo for Malcolm or Tom, and an interested developer
could probably fix it in half an hour - see src/compiler/Parse, and
add a test :-)

> -- Bug: parenthesized patterns break:
> -- (which I use in order to make monomorphism clear in either
> --  H98 m-r or mono-pat-binds)
> {-
> test :: Eq a => a -> Bool
> test a = f a
>   where
>     (f) = \a -> (==) a a
> -}

Again, an nhc common bug. I've no idea where this should be fixed, but
I'm sure Malcolm will know - and it should be possible to fix.

> --Bug: removing the default, breaks things:
> {-
> default ()
>
> iente :: Integral a => a -> Int
> iente = fromIntegral
> -}

No clue, only Malcolm will know, and it may be a nightmare to fix.

> --Bug: Always specifying an import list when importing Prelude,
> --breaks handling of some built-in syntax.  However, Hugs also has
> --this bug so I'll keep my workaround.
> {-
> import Prelude ( )
>
> simple :: ()
> simple = ()
> -}

We are aware that importing Prelude () is broken, this is because the
renaming code in Yhc/nhc isn't very neat. Me and Tom both had a go at
fixing this once, and we got absolutely nowhere. See
http://code.google.com/p/yhc/issues/detail?id=81&q=Prelude - which I
think might even be from you originally :-)

If anyone wants to make the first three into proper issues in the
issue tracker, that would be handy.

Thanks

Neil


More information about the Yhc mailing list