Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Haskell中的常规树中删除i:th节点_Haskell_Tree - Fatal编程技术网

从Haskell中的常规树中删除i:th节点

从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) 但

我想删除普通树的第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)
但我得到了这个错误:

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