0
以下のコードシーケンスは、入力時に解析エラーを生成しています|
。 入力は、入力がツリーノードが、私はHaskellでは初心者です左サブツリー、値、右のサブツリーhaskellで構文解析入力エラーを生成します
data Tree t = Leaf t
| Node (Tree t) t (Tree t)
foldTree :: (t1 -> t -> t1 -> t1) -> (t -> t1) -> Tree t -> t1
foldTree treeFn leafFn tree= | foldTree (Leaf v) = leafFn(v)
| foldTree (Node left v right) = treeFn(left v right)
Input : foldTree (\t1 t t2->t1 + 5*t + t2) (\x->x+9) (Leaf 5)
Expected Output : 14
Input : foldTree (\t1 t t2->t1 + 3*t + t2) (\x->x+5) (Tree (Leaf 3) 2 (Leaf 4))
Expected Output : 23
でTreeFuncを呼び出した場合は、リーフノードはその値 でleafFuncを呼び出した場合。
パースエラーの結果が正しくフォーマットされている、あなたのガード文を形成したいものです。 '|'の前に等号を置いてはいけません。 foldTreeにガード内の正しい数の引数を適用することを含め、後で修正するべきことがいくつかあります。 – mnoronha
"="の後にパターンマッチングを行います。どうやってやるの ? :) TIA –
あなたは機能/ガード構文が混乱しています。ガードの右側には、述語( 'True'または' False'に評価する関数)と対応する値の代入が含まれます。さまざまなケース(リーフとノード)をパターン化する場合は、case文を使用するか、関数宣言でいくつかのケースを手動で一致させることによって行うことができます。私はこれを読むことをお勧めします:http://learnyouahaskell.com/syntax-in-functions – mnoronha