2016-03-27 13 views
-3

パラメトリック多形関数foo :: a -> a -> aがあります。結果の式 foo arg1 arg2 arg3 arg4は、Boolとなるように4つの引数を指定します。ハスケルの多型関数

-- foo :: a -> a -> a function is defined in a code 
arg1 = undefined 
arg2 = undefined 
arg3 = undefined 
arg4 = undefined 
+1

がありますか? – chi

+0

arg1、arg2、arg3、arg4 :: a-> a-> Bool – azorge

+1

私は家事であるため、この質問を議論の対象外としています。本当にプログラミングの質問ではありません。 – mb14

答えて

3

ここはヒントです。

機能fooは、そのタイプがa -> a -> aであるため、2つの引数をとります。しかし、foo arg1 arg2 arg3 arg4と4つの引数を渡します。それはどうやってできますか?

まあ、我々はfoo arg1 arg2の結果は二つの引数を期待して機能(bar)である場合にのみ動作することができますfoo arg1 arg2 arg3 arg4

として
let bar = foo arg1 arg2 
in bar arg3 arg4 

を解釈することができます。しかし、barのタイプは、fooのタイプからaでなければならないことがわかっています。したがって、タイプ変数aは、バイナリ関数のタイプ、すなわちb -> c -> dのように選択されなければならない。 foo :: a -> a -> a場合要約

は、その後、我々はまた、あなたが何をしようとしなかった

foo :: (b -> c -> d) -> (b -> c -> d) -> (b -> c -> d)