我以前从未编程过,最近(1周前)才开始学习!第一门课是使用Haskell的函数式编程。
我有一个学校作业,想通过删除一两个步骤来改进它,但有一个讨厌的错误阻碍了我。
基本上,我创建了一个列表,并且得到了类型为[Integer]
的结果,而我希望在可能的情况下将其转换为Integer
。我已将我的测试函数设置为接受类型Integer -> Integer -> Bool
(接受两个值,计算它们并返回一个布尔值)。测试函数将这些值放入两个函数中并比较它们的结果。
我可以只更改预期类型为[Integer]
(?),但那样会消除手动输入值的选项。
对于我的测试用例,我选择了一些值并将它们放入列表中。a = [0, 2, (-3)]
和b = [0, 2, 4]
。当我调用函数时,我想输入a
和b
作为值,而不是每次都手动输入每个测试用例。这可行吗?例如:
testFunction a b
而不是像这样
testFunction Integer Integer.
我希望我说得清楚 :-) 请记住,我只是在学习!
a
和b
中每个元素的组合,还是只想执行像testFunction 0 0
、testFunction 2 2
、testFunction (-3) 4
这样的值对? - bheklilrtestFunction :: [Integer] -> [Integer] -> [Bool]
,在每一步中它会取出两个列表的第一个元素,运行你的函数testFunction
然后将结果添加到之前计算版本的列表中。看看能否想出一种用 Haskell 表达这个函数的方式。 - C. QuilleyzipWith
函数,则可以使用它,但我强烈建议您尝试自己实现递归,这样您将在过程中学到很多东西。实现这个函数并不是很困难。首先实现zip
(在GHCi中尝试一下以了解其功能),然后尝试实现zipWith
。您将需要使用递归来完成。 - bheklilr