【发布时间】:2021-09-17 15:55:06
【问题描述】:
data BB a = L | K (BB a) a (BB a) deriving (Show)
foldrpBB :: (a -> b -> b) -> b -> BB a -> b
foldrpBB f b L = b
foldrpBB f b (K l r a) = foldrpBB f (f r (foldrpBB f b a)) l
foldrprBB :: (a -> b -> b) -> b -> BB a -> b
foldrprBB f b L = b
foldrprBB f b (K a l r) = foldrprBB f (f l (foldrpBB f b r)) a
我正在尝试创建两个不同的折叠函数,当与匿名函数结合使用时,它们将打印给定二叉树的后缀和中缀表达式,例如 K (KL 2 L) 1 (K (KL 4 L) 3 L)函数如 (\x xs -> concat ["(", show x, xs, ")"])。
我收到一个错误,基本上告诉我我的函数需要一个字符串,但它应该需要一个函数和一个二叉树 (BB):
- 无法匹配预期类型:[Char]
实际类型:BB a0 -> a0 -> BB a0 -> BB a0
- 可能原因:
K' is applied to too few arguments In the second argument offoldrpBB',即`K' 在表达式中: 折叠rpBB (\ x xs -> concat ["(", 显示 x, xs, ....]) K (K L 2 L) 1 (K (K L 4 L) 3 L)
- 可能原因:
我该如何解决这个问题?
【问题讨论】:
标签: haskell types binary-tree fold infix-notation