haskell - 无论我尝试多少种不同的方法,都无法编译一些简单的 Haskell 代码
问题描述
我正在尝试编写一个 Haskell 函数,该函数接收一棵树,并用一对包含该节点的子树高度和原始节点的对替换每个节点
根据我在最后一行代码中放置括号的位置,我会得到各种不同的错误。我知道我的高度功能有效,因为我以前曾将它用于不同的功能。我显然没有正确地将事物组合在一起,因为我已经得到了从没有给最大值提供足够的参数到给对提供太多参数的一切。请帮忙!我真的被困在这里并且没有任何进展,因为我只是来回移动括号。
data Tree a = Tip | Bin (Tree a) a (Tree a) deriving (Show, Eq)
getHeight :: Tree a -> Integer
getHeight Tip = 0
getHeight (Bin l _ r) = (max (getHeight l) (getHeight r)) +1
pairs :: Tree a -> Tree (Integer, a)
pairs Tip = Tip
pairs (Bin l x r) = (Bin (pairs l) ((max (left right)) x) (pairs r))
where left = (getHeight l)
right = (getHeight r)
解决方案
使用两个参数调用函数的方法是用空格分隔它们,如下所示:
f x y
或者在你的情况下,这将是:
max left right
构造对的方法是使用括号和逗号,如下所示:
(42, "foo")
或者在你的情况下,这将是:
(max left right, x)
总结所有这些,该行应该是:
pairs (Bin l x r) = Bin (pairs l) (max left right, x) (pairs r)
推荐阅读
- pyspark - 将 Pyspark 数据框转换为具有实际值的列表
- ios - 跳过代码中的 if - then 控制流在警报后运行
- python - Python Selenium - 如何动态单击“加载更多”直到它消失?
- ios - 自 2020 年 4 月 30 日起,Apple 将不再接受使用 UIWebView 的新应用提交
- c++ - 坚持使用 C++ 元编程
- c++ - 如何在 C++ 或 C 中创建和编写索引 png 图像
- elasticsearch - 从 Kibana elasticsearch 嵌入地图
- sql - 查找总和的最大值的子查询
- ios - 从表格视图中的另一个视图控制器播放某些歌曲时遇到问题
- javascript - 使用 VueJS Devtools Chrome Extension 调试另一个 Chrome 扩展