üzerinde çalışır. LYAH'da, buna benzeyen bir kod parçası vardır.Foldable.foldl, Num a => a
data Tree a = Empty | Node a (Tree a) (Tree a) deriving (Show, Read, Eq)
instance F.Foldable Tree where
foldMap f Empty = mempty
foldMap f (Node x l r) = F.foldMap f l `mappend`
f x `mappend`
F.foldMap f r
ghci> F.foldl (+) 0 testTree
42
ghci> F.foldl (*) 1 testTree
64800
olarak bildiğim kadarıyla, foldMap
tip foldMap :: (Monoid m, Foldable t) => (a -> m) -> t a -> m
ait olmakla Num a => a
kendisi değil tip Monoid
ait, yani Foldable.foldl
aslında burada çalışıyor mu merak ediyorum? Ve foldMap
dahili olarak Foldable.foldl
tarafından çağrıldığı için Monoid
'un türü nedir?
Merhaba @WillemVanOnsem, yardımın için teşekkürler. Bu tam olarak kafam karıştı, 'mempty = 1' den bahsettin, o zaman buradaki "mempty" nin türü nedir? Bunu tam olarak anlayamıyorum çünkü 'Sum' ve' Product''nın aksine Int', “Monoid' AFAIK” tipinde değil. Bunun hakkında biraz daha açıklayabilir misiniz? teşekkürler –
Hmm, anlıyorum, Haskell’e yeni geliyorum, sanırım eksik olduğum kısım bu. Çok teşekkürler :) –
Bu endo hilesinin, kesinlikle yeni başlayan materyal olmadığına dikkat edin. Belki de 'katlama' ('x'> 'x]) 'i kullanarak katlanabilir herhangi bir dosyayı düz bir listeye dönüştüren bir' katlama 'uygulaması yazmak daha kolaydır, böylece tek-basitçe' [a]' dır ve Listede foldl'. Daha az verimli, ama muhtemelen daha kolay anlaşılır. Bu iyi bir egzersiz için yapabilirdi :) – chi