我想创建一个函数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