[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