我想創建一個函數apply,它接受一個具有任意數量參數的函數以及一個整數列表,並返回函數的結果(其中每個整數in該列表是爲了爭論將函數應用於任意長度的參數列表
我的想法是這樣的:
apply :: ([Int] -> Int) -> [Int] -> Int
apply f x:xs = apply (f x) xs
apply f [] = f
但我知道這不會起作用,因爲該類型簽名是不正確的 - 功能並不需要整數的列表。 ,它只需要一些int參數。
此外,當我到達基本情況下,應用的f參數應該實際上是一個整數,無論如何都違反了類型簽名。
有誰知道如何處理這類問題?
您只需要使用FlexibleInstances,您可以繞過整個IsInt類並直接編寫ApplyType(Int - > r)。 – 2010-05-10 17:11:43