
I agree. You might need to write up the notes below into a publicly-readable form, but that should not be hard. (In general, for all our “verdicts” I think we should write up a rationale for the author and others to read.) Simon From: ghc-steering-committee [mailto:ghc-steering-committee-bounces@haskell.org] On Behalf Of Richard Eisenberg Sent: 13 March 2017 20:16 To: ghc-steering-committee@haskell.org Subject: [ghc-steering-committee] Eval proposal (#27) I am shepherding the Eval class proposal, #29. Very, very briefly, this proposes to bring back
class Eval a where seq :: a -> b -> b
The author of the proposal cites some motivation, but a recurring theme in the discussion is that this is just the first step toward some ill-defined promised land. The author himself admits he’s not quite sure what the promised land holds, other than safety under eta-expansion, along with a restoration of parametricity. The proposal includes a new extension, on by default, -XUniversalEval, that adds Eval constraints in many places. Even with -XUniversalEval, however, this extension is not fully backward compatible, in corner cases (seq’ing in a class method; polymorphic recursion, possibly higher-rank types. I move to reject this proposal. The author (along with a few others) argues that this brings some nice theoretical properties to Haskell. I agree here. But the cost doesn’t seem to be worth the benefit, especially considering that this may be the first step toward some ill-specified goal. In short, while I might be happy enough with the language proposed here, I don’t relish the idea of getting from where we are to that language, and I don’t think the gain is worth the pain. You can see the PR here: https://github.com/ghc-proposals/ghc-proposals/pull/27 Richard