[Yhc] Some more changes to core

Neil Mitchell ndmitchell at gmail.com
Mon Aug 6 12:57:26 EDT 2007


Hi

> > >     Foo.Foo.Prelude.200.bar v217 v218 = ...
>
> I don't see where the Prelude bit came from, but I'm assuming that the
> second "Foo" was a typo for lower-case "foo".

Thin air. And no typo, it duplicates the module name twice.

> FWIW, my preference would be to keep a reference to the enclosing
> function name in the local name, e.g.
>
>        Foo.foo.200.bar
>
> This style has the advantage of remaining decipherable by the careful
> reader.  "bar" is a local definition within "Foo.foo", and because there
> are potentially many different local "bar"s within different clauses of
> "Foo.foo", the number disambiguates.

I agree, which necessitates Foo;foo.200.bar, to split the components back up.

>  Even better if the number was
> essentially a line number or similar (clause number?), to make it even
> more readable.

It can't be a line number, since you can potentially put two clauses
on the same line. You could certainly do better with the desugaring,
but I think a more annoying desugar problem comes with _LAMBDA's which
crop up quite a bit, and have absolutely nothing tying them back to
their original location.

Thanks

Neil


More information about the Yhc mailing list