账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何查看haskell中typeClass函数的默认实现?
    49
    0

    有如下这个例子:
    `

    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所有的函数的类型,确无法看到默认实现,有什么办法可以得知默认实现呢?

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部