2016-03-27 117 views
-3

具有參數多態函數foo :: a -> a -> a。給出四個參數,以便產生的表達式 foo arg1 arg2 arg3 arg4將具有類型BoolHaskell中的多態函數

-- 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。但是,foo arg1 arg2 arg3 arg4通過四個的論點。這是如何工作的?

好了,我們可以解釋爲foo arg1 arg2 arg3 arg4

let bar = foo arg1 arg2 
in bar arg3 arg4 

如果foo arg1 arg2結果是期待兩個參數的函數(bar)才能做到這一點。但是我們知道bar的類型必須是foo的類型中的a。因此,必須選擇類型變量a作爲二元函數的類型,即類似b -> c -> d

綜上,如果foo :: a -> a -> a,那麼我們也有

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