如何查看haskell中typeClass函数的默认实现?
有如下这个例子:
import qualified Data.Foldable as F
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
testTree = Node 5
(Node 3
(Node 1 Empty Empty)
(Node 6 Empty Empty)
)
(Node 9
(Node 8 Empty Empty)
(Node 10 Empty Empty)
)
对于 Tree
这个 instance 来说,我并没有定义 foldr
这个方法,但是,我在控制台中执行 F.foldr (+) 0 testTree
确可以得到 42
这个我想要的结果。那么在 F.Foldable
这个typeClass上应该是定义了 foldr
这个方法所以我才能在 instance 中未定义的情况下也能调用该方法吧,但是我使用 :info
命令去查看这个 typeClass 时只能查看到该 typeClass 所有的函数的类型,确无法看到默认实现,有什么办法可以得知默认实现呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
hakell 绝大多数代码就是 hashell 实现的,所以你可以看源码:
https://github.com/ghc/ghc/bl...