从Haskell中的常规树中删除i:th节点
我想删除普通树的第n个叶子,当树上没有更多叶子时,会得到一个错误。 我有以下代码:从Haskell中的常规树中删除i:th节点,haskell,tree,Haskell,Tree,我想删除普通树的第n个叶子,当树上没有更多叶子时,会得到一个错误。 我有以下代码: entferne :: NBaum a -> NBaum a entferne (NBlatt i) int | i == int | otherwise = NBlatt i entferne (BKnoten left right) int = BKnoten (entferne left int) (entferne right int) 但
entferne :: NBaum a -> NBaum a
entferne (NBlatt i) int | i == int
| otherwise = NBlatt i
entferne (BKnoten left right) int = BKnoten (entferne left
int) (entferne right int)
但我得到了这个错误:
parse error on input `|`
我检查了班次,用空格填充了所有空格,但还是得到了 线路
entferne (NBlatt i) int | i == int
缺少该情况的返回值。应该是
entferne (NBlatt i) int | i == int = <some value here>
entferne(NBlatt i)int | i==int=
一个问题是线路
entferne (NBlatt i) int | i == int
这是一个模式守卫。它需要跟在
=
后面,然后是一个表达式来计算这种情况。这是行不通的,除非你想让entferne
调用error
并使程序崩溃。它无法返回错误,除非您将其更改为NBaum->Maybe NBaum
。