2017-05-23 5 views
0

一般的なツリーのn番目の葉を削除したいが、ツリー上に葉が残っていないときはエラーを返す。 私はこのコードを持っている:ハスケルの一般的なツリーからi番目のノードを削除する

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 `|` 

私はシフトが確認されなかったスペースを持つすべてのスペースを、まだそれを得ます。

+0

これは、 'entferne'が' error'を呼び出してプログラムをクラッシュさせない限り、うまくいかないでしょう。 'NBaum - >多分NBaum'に変更しない限り、エラーを返す方法はありません。 – Davislor

答えて

0

entferne (NBlatt i) int | i == int 

は、その場合の戻り値を欠いています。それは

entferne (NBlatt i) int | i == int = <some value here> 
0

一つの問題は、ライン

entferne (NBlatt i) int | i == int 

はパターンガードであるということであるべきです。それに続いて=を入力し、その場合はその式を計算する必要があります。

関連する問題