Ben Functors nasıl çalıştığını anlamaya çalışıyorum, bu yüzden buraya bu konuda okuyun: http://learnyouahaskell.com/making-our-own-types-and-typeclasses#the-functor-typeclassHaskell - Functors
Bir harita alır ve (bir listedir) değerlerin toplamını hesaplayan bir işleve sahiptir.
reduce :: Map String [Int] -> Map String Int
reduce = fmap sum
Gerçekten fmap
nasıl çalıştığını anlamadı yüzden bu konuda okumak ve kendi versiyonunu yapmaya çalıştı. Bunu gerçekten test edemem çünkü Harita zaten Haskell kütüphanesinde tanımlanmıştır.
Peki bu doğru mu?
instance Functor (Map k) where
fmap f fromList[] = []
fmap f fromList[(k, v): xs] = (f v) fmap xs
doğrudan alakalı değil, ama ben http://adit.io/posts/2013 Functors açıklarken bu blog yazısı çok net bulundu: Eğer gerçekten deneme yapmak istediğiniz, bir
newtype
ilan edebilir -04-17-functors, _applicatives, _and_monads_in_pictures.html – chiHarika görünüyor! Teşekkürler, ben kontrol edeceğim. –
"Harita zaten tanımlanmış olduğundan gerçekten test edemiyorum" - Kodunuzu test etmek için bir "Functor" örneğini bildirmeniz gerekmez. Sadece işlevinizi kendi başınıza tanımlayın ve mevcut bir işlevle (ör., "Fmap") çatışmayan bir şeye yeniden adlandırın. –