转换[整数] - >整数

时间:2014-09-08 16:05:33

标签: list haskell integer

我之前从未编程过,我刚刚(1周前)开始学习!第一个课程是函数式编程,使用 Haskell。

我有一项学校作业,我希望通过删除一两步来改进,但是我的方法中有一个讨厌的错误。

基本上,我创建了一个列表,我得到了[Integer]类型的结果,而我想将其转换为Integer,如果可能的话?我已将我的测试函数设置为接受类型Integer -> Integer -> Bool(接受两个值,计算它们并返回一个bool)。测试函数将值放入两个函数中并比较它们的结果。

我可以将预期的类型更改为[Integer](?),但这会消除手动输入值的选项。

对于我的测试用例,我选择了一些值并将它们放入列表中。 a = [0, 2, (-3)]b = [0, 2, 4]。我在调用函数时要做的是输入ab作为值,而不是每次都输入每个测试用例。这可能吗?例如:

testFunction a b

而不是

testFunction Integer Integer.

我希望我有道理:-)请记住我只是在学习!

1 个答案:

答案 0 :(得分:1)

不要让这对你来说太复杂,你似乎要寻找的是能够将两个Integers列表传递给一个接受整数的函数,以执行逐元素操作。

为此,您可以使用zipWith,其类型签名为:

zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]

此类型签名意味着zipWith接受一个接受两个单独元素的函数,以及两个列表,并返回基于您传递的函数结果构建的列表。

总而言之,您将执行:

zipWith myFunction [1,2,3,4] [5,6,7,8]

现在,您要创建一个首先在两个函数中使用zipWith的函数,然后再次使用zipWith来比较两个结果列表,最后返回布尔值。如果你想要更复杂,你可以使用最后的and函数,如果所有布尔值都是True,则返回一个布尔值。

现在,构建该功能留给读者一个练习:)

我希望这会有所帮助。