[RFC] Bang constraint
Simon Peyton-Jones
simonpj at microsoft.com
Fri Apr 5 09:19:04 CEST 2013
I don't think so. It's very magic in many ways; more than invoking methods. Eg when pattern matching we know that the thing is evaluated, and so don't need to re-seq it when re-building a similar constructor. And it's not clear what would be gained.
A long time ago, seq had this type
class Eval a where
seq :: a -> b -> b
which was a very good, principled thing to do. One of Haskell's few compromises with reality was to make seq polymorphic.
Simon
| -----Original Message-----
| From: ghc-devs-bounces at haskell.org [mailto:ghc-devs-bounces at haskell.org]
| On Behalf Of Gabor Greif
| Sent: 03 April 2013 19:06
| To: ghc-devs
| Subject: [RFC] Bang constraint
|
| 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
|
| _______________________________________________
| ghc-devs mailing list
| ghc-devs at haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-devs
More information about the ghc-devs
mailing list