でツリーに機能をマップ私たちのようなバイナリツリーを定義することができます。ハスケル
data Tree a = Node a (Tree a) (Tree a)
| Empty
deriving (Show)
は、今私は機能を持って、私は、バイナリツリーにマッピングできるか、(+)
を言うの?任意の関数をバイナリツリーにどのようにマップできますか?
ので(+) a b
これは木に機能をマッピングするために私たちを尋ね、上記のは、私はそれを理解する方法です宿題です
Node (+) a (Node (+) Empty Empty) (Node a Empty Empty))
になります。
関数の宣言は次のようになります。
functionToTree :: (t1 -> t2) -> Tree a
私は、その数引数の可変である関数の型を定義する時まで開催されています。
EDIT: nponeccopが言ったように申し訳ありませんが、私は私の仕事を誤解し、私はfunctionToTree :: (a -> b) -> Tree a -> Tree b
の書き方を知っていました。それにもかかわらず、私はまだ私の元の質問に不思議です。機能については
(+) a
/\
(+) a
f
は三つのパラメータa
b
c
取っ:
f a b
/ \
f a b
/\
f a
[OK]を、これは私の宿題について、もはやですが ビットを明確にするために、ここで私が考えてきたものです。私はそのような関数を書くことが可能かどうか疑問に思います。 私たちは、このような方法でリストを定義することができます。
data Li a = Cons a (Li a)
| Empty
deriving (Show, Eq, Order)
はそのような一般的な機能を定義することが可能ですか? 私の質問が理にかなっていないと思うなら、投票してください。
詳細:私は私の質問を洗練しました。私のツリーは、部分的な機能とカレーを説明する別の方法だと思います。
人々はあなたが解決しようとする試みを示している場合は特に、あなたを助ける可能性が高くなります宿題に問題がある。 –
Thx、私は何時間も試してみましたが、ここに私のごみを載せるのは好きではありません。あなたは知っています、それは1か0のどちらかです – manuzhang
それぞれのノードに1つの値を持つバイナリツリーの文脈で '(+)a b 'とは何ですか? –