小编Roe*_*ies的帖子

当Tree实现可折叠折叠图时,Foldr/Foldl是免费的吗?

我是Haskell的初学者,并且从"了解你一个Haskell"中学到了一些我对Foldable的Tree实现不了解的东西.

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  
Run Code Online (Sandbox Code Playgroud)

引用来自:LYOH:"因此,如果我们只为某种类型实现foldMap,我们可以免费获得该类型的foldr和foldl!"

有人可以解释一下吗?我不明白为什么以及如何免费获得foldr和foldl ..

haskell fold foldable

16
推荐指数
2
解决办法
917
查看次数

Haskell Applicative []为什么我不能在函数中用[]替换pure []?

ghci> :t pure []
pure [] :: Applicative f => f [a]
Run Code Online (Sandbox Code Playgroud)
ghci> pure []
[]
Run Code Online (Sandbox Code Playgroud)
ghci> :t []
[] :: [a]
Run Code Online (Sandbox Code Playgroud)
ghci> fmap ((:) 2) (pure [])
[2]
Run Code Online (Sandbox Code Playgroud)
ghci> fmap ((:) 2) ([])
[]
Run Code Online (Sandbox Code Playgroud)

我本来以为更换pure[][]fmap ((:) 2) (pure [])会导致同样的结果..谁可以解释的差异吗?

haskell applicative

5
推荐指数
2
解决办法
405
查看次数

标签 统计

haskell ×2

applicative ×1

fold ×1

foldable ×1