[Haskell-cafe] Re: Status of TypeDirectedNameResolution proposal?

Stefan Monnier monnier at iro.umontreal.ca
Fri Nov 20 10:08:45 EST 2009

> You know, another solution to the records problem, which is not quite
> as convenient but much simpler (and has other applications) is to
> allow local modules.

> module Foo where
>   module Bar where
>     data Bar = Bar { x :: Int, y :: Int }
>   module Baz where
>     data Baz = Baz { x :: Int, y :: Int }

>   f a b = Bar.x a + Baz.y b

For someone coming from an SML background, that makes a lot of sense.
You could also add an "automatic lightweight module", like Agda does,

  data Baz = Node { x :: Int, y :: Int }

implicitly defines a local module Baz with record selection functions
Baz.x and Baz.y and even a Baz.Node constructor.


More information about the Haskell-Cafe mailing list