6

私はここを読んでいて、たとえば、次の関数定義がある場合に気づきました。

a :: Integer->Integer->Integer
b :: Integer->Bool

次の式は無効です:

(b . a) 2 3

コンポジションの関数が1つのパラメーターのみを持たなければならないのは非常に奇妙です。

Haskellで最も一般的なものを定義する際に問題があるため、または他の理由があるため、この制限はありますか?

私はHaskellを初めて使用するので、おそらく役に立たない質問をしています。

4

1 に答える 1

7

すると、 2 つの引数にa 2 3適用されません。a実際にはa、その唯一の引数に適用して関数になり、その関数を取得して 3 に適用します。したがって、実際には 2 つのアプリケーションを実行します。したがって、ある意味では、あなたが持っているものはこれと同等ではありません:

a :: (Integer, Integer) -> Integer
b :: Integer -> Integer
(b . a) (2, 3)

ところで、あなたはこれを行うことができたでしょう

(b . a 2) 3
于 2010-12-29T04:20:04.253 に答える