这种结构如何匹配

发布于 2022-08-22 07:21:00 字数 34 浏览 23 评论 3

try
size (NBranch t (x:xs))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ゃ懵逼小萝莉 2022-08-26 17:02:29

原帖由 jamesr 于 2009-6-26 21:00 发表

谢谢。之前怎么就没发现呢?

呵呵,慢慢来吧

There is no royal road to Haskell.
—Euclid1

[ 本帖最后由 MMMIX 于 2009-6-26 21:11 编辑 ]

挽你眉间 2022-08-25 02:46:35

原帖由 jamesr 于 2009-6-26 11:27 发表
见代码:

data NTree t = NLeaf t
             | NBranch t [(NTree t)]
             deriving Show

instance Tree (NTree t) where
  size   (NLeaf t) = 1
  size   (NBranch t x:xs) =
         1 + size x + size xs

你这个 size 的定义有问题,size 的类型是
size :: (Tree t) -> Int

可是在 size xs 中, xs 的类型是 [Tree t], 把 size xs 换成
foldr (s n -> size s + n) 0 xs

就可以了。当然,size (NBranch t x:xs) 也要改成 size (NBranch t (x:xs))

月下伊人醉 2022-08-23 07:11:58

原帖由 jamesr 于 2009-6-26 13:07 发表
还是不对啊:

class Tree a 的定义呢?贴出来看看。

想实现一个度为任意的树,有没有其他好的结构?

你这个结构就挺好的么,可能就是有效率方面的问题,可以看看 zipper,好像针对这个有优化,还没来得及看呢。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文