標準MLで関数maptreeを作りたいです。 関数f(x)= x + 1; その後、標準MLで関数maptreeを作りたい
maptree(f, NODE(NODE(LEAF 1,LEAF 2),LEAF 3));
結果
NODE(NODE(LEAF 2,LEAF 3),LEAF 4))
私は以下のようなコードを書く行う必要があります。
datatype 'a tree = LEAF of 'a | NODE of 'a tree * 'a tree;
fun f(x) = x + 1;
fun maptree(f, NODE(X, Y)) = NODE(maptree(f, X), maptree(f, Y))
| maptree(f, LEAF(X)) = LEAF(f X);
私はこの
maptree(f, (NODE(NODE(LEAF 1,LEAF 2),LEAF 3)));
結果は私は (NODE(ノード(リーフ2、LEAF 3)、LEAF 4))) しかし ノードにたくされないように、このコードを実行します(NODE(リーフ#、リーフ#)、リーフ4))。 これはなぜ発生しましたか(数字ではなく#)。