
| that I deliberately avoided talking about “Wanted” constraints and | other Outside-In terminology, which I consider implementation details | and which a language feature specification should, if at all possible, | avoid. I might not have succeeded in giving a good specification, but I agree with that, and it's a valid criticism of my language. However, if you want to reason about what type should be inferred for f x = x==x && x>x (which is a user-facing thing, totally part of the language spec), then it's probably easier to say "From the use of (==) you get a wanted (Eq a) constraint, where x::a. From the use of (>) you get a wanted (Ord a). Both can be derived from a Given (Ord a)." or language like that. Understanding typing rules is, I think, harder. Moreover, it's quite hard to explain fundeps using typing rules. (Try it!) I was trying to draw the analogy, since we already have fundeps. Simon | -----Original Message----- | From: ghc-steering-committee [mailto:ghc-steering-committee- | bounces@haskell.org] On Behalf Of Joachim Breitner | Sent: 28 April 2017 01:20 | To: ghc-steering-committee@haskell.org | Subject: Re: [ghc-steering-committee] Proposal #23: instance force | | Hi, | | I’ll try to refrain from pouncing on every point raised, and I am not | trying to sway anyone’s mind (I don’t feel very strongly about the | proposal and will not shed a tear if it does not go through), but | allow me to comment on | | Am Donnerstag, den 27.04.2017, 22:56 +0000 schrieb Simon Peyton Jones: | > No need to do this ill-specified "change the type of imported | > functions" stuff. | | that I deliberately avoided talking about “Wanted” constraints and | other Outside-In terminology, which I consider implementation details | and which a language feature specification should, if at all possible, | avoid. I might not have succeeded in giving a good specification, but | there is a rather clear picture in my head, so I can clarify if there | are open questions. | | > It'd work fine for | > instance force C [a] | > too, which the proposal doesn't allow. | | Not quite true. If there is a | | instance C [a] | | in scope around, then | | instance force C [a] | | would work fine. | | | But you are right that the current wording (“from an empty context”) | would prohibit it if the instance | | instance D a => C [a] | | where in scope. | | Should the tides turn (which seems unlikely) I can improve this part. | | Greetings, | Joachim | | | | | -- | Joachim Breitner | mail@joachim-breitner.de | | https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jo | achim- | breitner.de%2F&data=02%7C01%7Csimonpj%40microsoft.com%7C4dbafc73718744 | 86953b08d48dcc51fe%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636289 | 356110063073&sdata=Zs%2BSqmtdFn7a%2Fvy7h2KC1m%2Fu%2Bj3DiOLHzSoIJ7y8BgM | %3D&reserved=0