【发布时间】:2021-08-13 16:32:31
【问题描述】:
所以我有一个接受三个变量的函数。变量 y 被另一个函数调用,该函数将把它变成一个列表。
我想将映射应用到这个变量列表。这样我就可以一次使用列表中的所有元素递归函数。
因为这个函数接受三个变量,一个是一个列表,我想调用函数并应用列表的每个元素,直到列表为空。我不确定如何执行此操作并每次都返回剩余的两个变量。
search :: State -> Int -> Int -> Int
search state n1 n2 = case n1 of
0 -> 1 * n2
num -> average( map (search s) n1-1 n2)
where s = turnStateToList s
我没有包括要列出的转弯状态,但我认为不需要回答这个问题。基本上它将产生一个新状态列表。把它想象成一棵树。
我得到的错误是
* map is applied to too many functions
* y has been given arguments however yy takes in 0 arguments
我知道它是如何得到这些错误的,但是我不确定还有什么办法可以修复它。我试过改变括号,这只会给出不同的参数错误。
【问题讨论】:
-
where y = anotherfunc ymjakes 没有意义,因为您根据y定义y,所以是递归定义。 -
坦率地说,没有这很有意义。请举例说明您实际上希望如何在实践中使用
func。 (顺便说一句,不要调用函数func!) -
“我想将映射应用于变量 y,这样每次我调用函数时,都会从 y 列表中给出不同的 y 值。”我正在努力理解它的实际含义。你能展示几个函数输入和期望输出的例子吗?
-
我已经更新了这个问题。感谢您的帮助和反馈。
-
能否请您提供一些输入和预期输出?我们很难弄清楚你真正想要做什么,这可能会有很大帮助。因为我真的试过了,但不知道你想在这里实现什么。
标签: haskell recursion map-function