[RFC] Bang constraint

Gabor Greif ggreif at gmail.com
Wed Apr 3 20:06:03 CEST 2013


Now that Constraint kinds are pretty much into the mainstream, can we
consider the '!' annotation in data declarations as a magic
constraint? Not unlike NFData, but only ensuring that said value is in
WHNF.

So the following definitions would be semantically identical

> newtype Foo a = Foo a

> data Foo a = Foo !a

> data Foo a = (!a) => Foo a

> data FooC :: (* -> Constraint) -> * -> * where
>   Foo :: c a => a -> FooC c a
> type Foo a = FooC ! a

It just occured to me and seemed plausible at first thought, but feel
free to flame me because of the magic-ness.

Cheers,

    Gabor



More information about the ghc-devs mailing list