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
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.
Nedeninin ne olduğu neden Göster.get(O...
Neden't Java Göster Toplama uzanı...
Neden jQuery Göster/Gizle:görüş yok ye...
Neden göster C tipi değişken kullanıld...
Neden sıralanmamış bir dizi daha hızlı...