SORU
18 EYLÜL 2011, Pazar


Neden göster, fmap ve liftM var mı?

map :: (a -> b) -> [a] -> [b]

fmap :: Functor f => (a -> b) -> f a -> f b

liftM :: Monad m => (a -> b) -> m a -> m b

Neden aslında aynı şeyi üç farklı fonksiyonlar var mı?

CEVAP
18 EYLÜL 2011, Pazar


map Tarihsel nedenlerle listeleri ve işlemleri kolaylaştırmak için (What's the point of map in Haskell, when there is fmap?) var.

3You ayrı bir harita işlevi ihtiyacımız var nedenini sorabilir. Neden öylece geçerli. harita listesi-sadece harita fonksiyonu ve yeniden fmap yerine? Bu iyi bir soru. Bu her zamanki argüman birisi kullanılarak yanlış ve harita Haskell öğrenme, çok olur. bakın Funktorlar hakkında daha listeleri ile ilgili bir hata değil.

*8 -- * sayfa 20

fmap liftM monadlar otomatik olarak Haskell olması gerekse de (): funktorlar değil, çünkü var

Hem fmap ve liftM var aslında. Monad türü sınıfı gerektirmez aslında talihsiz bir sonucu olarak Functor bir örneği, matematiksel olsa da, her monad bir bile functor. Ancak, fmap ve liftM olduğundan aslında değiştirilebilir, bir örnek olmak üzere herhangi bir tür için bir hata (yerine sosyal teknik anlamda) ayrıca Functor bir örneği olmanın Monad olmadan.

-- Typeclassopedia, sayfa 33

Edit: map fmap agustuss tarihi:

Böyle değil aslında. Ne olduğunu harita türü Haskell 1.3 Functor kapsayacak şekilde genelleştirilmiş oldu. I. e., Haskell fmap 1.3 göster çağrıldı. Bu değişiklik, daha sonra Haskell 1.4 döndürüldü ve fmap tanıtıldı. Bu değişikliğin nedeni, pedagojik; yeni başlayanlar için Haskell öğretirken göster çok genel Tür hata mesajları anlamak daha da zorlaşır. Bence bu sorunu çözmek için doğru yol değil.

-- What's the point of map in Haskell, when there is fmap?

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 30GB

    30GB

    14 AĞUSTOS 2006
  • Flohoo

    Flohoo

    12 EYLÜL 2009
  • girleffect

    girleffect

    20 Mayıs 2008