Re: [Haskell-cafe] Newclasses

2013-10-05 Thread Wvv
Stijn van Drongelen wrote On Fri, Oct 4, 2013 at 10:31 PM, Wvv lt; vitea3v@ gt; wrote: About newclass and compose data, we can do next: newclass Foo [a] = FooList a where {containerMainipulation=...} newclass Foo (Set a) = FooSet a where {containerMainipulation=...} newclass

Re: [Haskell-cafe] Newclasses

2013-10-04 Thread Wvv
Newclasses are something like instances, but out of scope. In a baggage. We don't use them for interfere their functions. This why newclasses never overlap each other and between them and any instances. We use newclasses to plug-in/connect to any related class or combine data Replying to you

Re: [Haskell-cafe] Newclasses

2013-10-04 Thread Stijn van Drongelen
On Fri, Oct 4, 2013 at 10:31 PM, Wvv vite...@rambler.ru wrote: Newclasses are something like instances, but out of scope. In a baggage. So under the hood of GHC, newclasses would be partially filled in dictionaries. We already have too many classes: (...) We can't divide all classes to

Re: [Haskell-cafe] Newclasses

2013-10-03 Thread Wvv
Your first two cases will be fixed in 7.10, as Applicative finally becomes a superclass of Monad. Sure, newclassses not about Applicative and Monads only. This question is more wider. Must Apply be a superclass of Bind? Must Bind be a superclass of Monad? So, must Monad has 2 superclasses at

Re: [Haskell-cafe] Newclasses

2013-10-03 Thread Stijn van Drongelen
On Thu, Oct 3, 2013 at 8:16 AM, Wvv vite...@rambler.ru wrote: Your first two cases will be fixed in 7.10, as Applicative finally becomes a superclass of Monad. Sure, newclassses not about Applicative and Monads only. This question is more wider. Must Apply be a superclass of Bind? Must

Re: [Haskell-cafe] Newclasses

2013-10-03 Thread Wvv
Yes, multi-class instances allow us write type Monad a = (Applicative a, Bind a) But at least 1 issue remains: Applicative : pure; Monad: return Bind : (-); Monad: (=) With MultiClassInstances we could write only instance Monad MyMonad where { pure= ...; (-)= ...} But we

Re: [Haskell-cafe] Newclasses

2013-10-03 Thread John Lato
I don't really understand what a newclass is supposed to be. On Thu, Oct 3, 2013 at 2:15 PM, Wvv vite...@rambler.ru wrote: newclass Bind a = Monad a = BMonad a where { (=) = (-) } I think this means that `BMonad` is supposed to be a new class that has both Bind and Monad in scope, the

Re: [Haskell-cafe] Newclasses

2013-10-03 Thread John Lato
Apologies, that wasn't finished. I meant to say, does it mean that by writing a BMonad instance a Monad instance would be automatically generated? If so, that seems like it would cause conflicts in many cases. Regardless, I think newclass needs to be better specified if you want other people to

Re: [Haskell-cafe] Newclasses

2013-10-02 Thread Stijn van Drongelen
Hi! Your first two cases will be fixed in 7.10, as Applicative finally becomes a superclass of Monad. I haven't really looked at your third case, so I can't comment on that. Your fourth case is something I'd really like to see solved properly (*together* with a better record system), but as you