GHC 7.10.x Migration hakkında bir makale okuyordum. Hataları düzeltmek için bazı öneriler var. GHC şikâyet ederseGHC 7.10.x migrasyonu: Neden bir başvuruda "pure = return" yazmıyor?
GHC
No instance for (Applicative ...)
diyor
Foo.hs: 7: 10: örneği bildirisinde bir örnek beyanı ait süper sınıf kaynaklanan (Uygulamalı Foo) için örnek 'Monad Foo' için bu hatayı düzeltmenin kolay bir yolu, bir Uygulayıcı (ve muhtemelen bir Functor) örneğini tanımlamaktır: Örnek Functor Foo burada fmap = liftM - veya alternatif olarak: - f harita = m >> = saf.
DO NOT USE `pure = return`
veDO NOT USE `(*>) = (>>)
: finstance Applicative Foo where -- NB: DO NOT USE `pure = return` pure = {- move the definition of `return` from the `Monad` instance here -} (<*>) = ap {- defined in Control.Monad -} -- or alternatively: -- f1 <*> f2 = f1 >>= \v1 -> f2 >>= (pure . v1) -- NB: DO NOT USE `(*>) = (>>)` (*>) = {- move the definition of `>>` from the `Monad` instance here -} instance Monad Foo where return = pure {- definition moved to `Applicative(pure)` -} (>>) = (*>) {- definition moved to `Applicative((*>))` -} {- ...retain other previous definitions... -}
Onaylanmış vardır. Neden kimse kullanamaz?
P.S. Kullanmaya çalıştım ve derlendi. @WillSewell olarak
Bu, özyinelemeli tanımlara yol açacaktır: “Monad” işlevi, “Uygulamanın” örnek işlevleri açısından tanımlanmıştır, bu nedenle başka şekilde de gidemezsiniz. –