OK, sorry about the noise!

On 26/10/12 09:41, Edward Kmett wrote:
> Tony, I think you misparsed the proposal. 
>
> The ...'s were for specific monads indicating the additional work required 
> for each Monad.
>
> I think the only real proposal on the table is the obvious one of adding 
> Applicative as a superclass of monad.
>
> From there there are a couple of incremental "improvements" that could be 
> made like adding the unimplemented superclass defaults or adding the 
> equivalent of DefaultSignatures to the language spec to reduce the burden on 
> Monad implementors.
>
> In practice I think either of those extensions would be premature to add to 
> the language specification at this time.
>
> I would be 100% behind adding the Applicative constraint as a superclass of 
> Monad and even perhaps of some bikeshedding, like exporting Applicative from 
> the Prelude, because otherwise you can't define a Monad without an import, 
> while you can now.
>
> I would be strongly against requiring superclass defaults or 
> DefaultSignatures in the haskell standard, however. The former is a largely 
> untested point in the design space and the latter has issues where it tightly 
> couples classes with their dependencies, leading to unbreakable cycles 
> between classes that all have to be defined together and poor engineering 
> practices.
>
> Best,
> --Edward
>
>
> On Oct 25, 2012, at 5:46 PM, Tony Morris <tonymor...@gmail.com> wrote:
>
>> I should have been clearer sorry. I should hope not that Functor <-
>> Applicative <- Monad.
>>
>> Perhaps I do not understand the purpose of this thread, but "fixing" the
>> hierarchy in this way is a mistake of similar magnitude to the original
>> position -- one that I would cringe at seeing repeated. That is why I
>> thought such a discussion was on-topic.
>>
>>
>> On 25/10/12 10:12, Ben Franksen wrote:
>>> Tony Morris wrote:
>>>> I should hope not. The identity element (return, coreturn, mempty, pure,
>>>> Category.id) is almost never needed.
>>>>
>>>> * http://hackage.haskell.org/package/semigroupoids
>>>> * https://gist.github.com/3871764
>>> Off-topic. Feel free to start a new thread named "The bombastic 
>>> one-and-true 
>>> class hierarchy I always wanted to have". These proposals have their 
>>> merits, 
>>> and I greatly respect the category theoretic knowledge that went into them 
>>> -- but this is another discussion. This thread refers to a rather modest 
>>> correction in the standard libraries, not a complete re-design. The idea is 
>>> to fix something that is widely accepted as an unfortunate ommision (in 
>>> fact, Oleg's comment is one of the very few that question the idea of 
>>> adding 
>>> super class constraints to Monad in principle).
>>>
>>> BTW, it is unclear what your "I hope not" refers to, since in both of the 
>>> hierarchies you linked to Applicative *is* a super class of Monad.
>>>
>>> Cheers
>>>
>>>> On 25/10/12 04:49, Ben Franksen wrote:
>>>>> First, let me make it clear that nowadays we are of course (I hope!)
>>> talking 
>>>>> about making not only Functor, but Applicative a super-class of Monad (so 
>>>>> Functor becomes a super-class by transitivity).
>>>>>
>>>>> Petr P wrote:
>>>>>> The main objections were that it would break existing code and that it
>>>>>> would lead to code duplication. The former is serious, [...]
>>>>>>
>>>>>> To address the first objection:
>>>>> I don't buy this "it breaks lots of code" argument. Adding the missing 
>>>>> instances is a complete no-brainer; as you wrote:
>>>>>
>>>>>> instance Applicative ... where
>>>>>>    pure   = return
>>>>>>    (<*>)  = ap
>>>>>> instance Functor ... where
>>>>>>    fmap   = liftM
>>>>> I do not think it is unreasonable to expect people to add such a simple
>>> and 
>>>>> practically automatic fix to some old programs in the interest of
>>> cleaning 
>>>>> up an old wart (and almost everyone agrees that this would be a good
>>> thing, 
>>>>> in principle).
>>>>>
>>>>> BTW, I guess most programs already contain the Functor instances (but
>>> maybe 
>>>>> not Applicative, as it is newer).
>>>>>
>>>>> I agree with Petr Pudlak that code duplication is not an issue, see
>>> above. 
>>>>> And yes, these "automatic" instances may have stronger super-class 
>>>>> constraints than strictly necessary. So what? The program didn't need the 
>>>>> Functor (or Applicative) instance anyway (or it already would have
>>> defined 
>>>>> it, in which case no change would be needed at all).
>>>>>
>>>>> "Default superclass instances" strike me as a complicated proposal for 
>>>>> solving trivial problems. The switch in Control.Exception (from data 
>>>>> Exception to class Exception) was much more disrupting, adapting programs 
>>>>> meant lots of changes everywhere exceptions are handled, not just adding 
>>>>> some trivial instances. Still people managed the transition.
>>>>>
>>>>> Cheers
>>
>> -- 
>> Tony Morris
>> http://tmorris.net/
>>
>>
>>
>> _______________________________________________
>> Haskell-prime mailing list
>> Haskell-prime@haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-prime


-- 
Tony Morris
http://tmorris.net/



_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to