Re: Retro-Haskell: can we get seq somewhat under control?

2016-12-21 Thread David Feuer
I don't want to actually put the dictionary there. I want to *pretend* to put the dictionary there. In testing mode, I want to be able to "take one out" by making it out of whole cloth; in production mode I want to just assume there are no bottoms in the constraints and never ever make the dictiona

Re: Retro-Haskell: can we get seq somewhat under control?

2016-12-21 Thread Edward Kmett
Actually, if you go back to the original form of Seq it would translate to data Seq a => Foo a = Foo !Int !a which requires resurrecting DatatypeContexts, and not data Foo a = Seq a => Foo !Int !a The former requires Seq to call the constructor, but doesn't pack the dictionary into the construc

Re: [ghc-devs]: Explicit inequality evidence

2016-12-21 Thread Anthony Clayden
> On Dec 13, 2016, at 1:02 AM, David Feuer wrote: > >> On Tue, Dec 13, 2016 at 12:49 AM, Oleg Grenrus wrote: >> >> I assume that in your rules, variables are not type families, otherwise >> >> x /~ y => f x /~ f y doesn't hold if `f` isn't injective. (e.g. type family F x where F x = ()) >> o

Retro-Haskell: can we get seq somewhat under control?

2016-12-21 Thread David Feuer
In the Old Days (some time before Haskell 98), `seq` wasn't fully polymorphic. It could only be applied to instances of a certain class. I don't know the name that class had, but let's say Seq. Apparently, some people didn't like that, and now it's gone. I'd love to be able to turn on a language ex