[Haskell-beginners] abstype?
Alexander Dunlap
alexander.dunlap at gmail.com
Mon Aug 15 07:52:11 CEST 2011
abstype is not currently a keyword in Haskell. To hide constructors
from client modules, use an explicit module export list, and don't
include the constructors in the list.
For example,
module MyModule ( Foo ) where
data Foo = Bar Int | Baz Float | Bat Double
will make Foo an abstract type, since Bar, Baz, and Bat are not exported.
Similarly,
module MyModule ( Foo ) where
data Foo = Foo Int
will also make Foo an abstract type, since Foo in the export list
refers to the type Foo, not the constructor Foo (which happens to have
the same name). To export Foo and its constructors, use Foo (..) in
the export list, or list the constructors explicitly: Foo ( Bar, Baz,
Bat ) for the first example, or Foo ( Foo ) for the second example.
Hope that helps.
Alexander
On 14 August 2011 22:06, Christopher Howard
<christopher.howard at frigidcode.com> wrote:
> In my older (1992) intro programming book, the author uses the keyword
> "abstype" instead of "data" inside of module code. From what I can gather,
> abstype is supposed to hide constructors. But I've never seen this keyword
> used in any modern tutorials I've gone through. Is "abstype" still a valid
> keyword? Is is still relevant?
>
> --
> frigidcode.com
> theologia.indicium.us
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
More information about the Beginners
mailing list