【发布时间】:2010-05-15 01:54:05
【问题描述】:
我有作业要使用一个函数更新列表,该函数接受两个元素并返回函数中给定的第一个元素的一部分的值。因此,需要通过遍历每个元素来更新整个列表,并通过将函数应用于列表中的所有其他元素(包括自身)来更新其值。
到目前为止,我一直在尝试首先映射列表(以便每个元素都完成相同的操作),然后通过再次映射指定元素的值来专门更新每个元素的值,但是尝试仅映射特定元素的值值通过:函数、特定元素和整个列表 我不断收到抱怨说我在推断从“映射函数 p@list 列表”生成的值列表,而不是简单地给出 p@list 的值。 这是我一直在尝试实现的示例:
res :: X -> X -> Z -- function given
myf :: [X] -> [X] -- Here is my function
myf ps = map newf ps
where
newf p@(X oldz) = X newz
newz = map (res p) ps
这是尝试根据整个列表本身更新列表的正确方法吗?
编辑:拼写错误和语法 - 我很抱歉没有把作业标签放在上面
【问题讨论】:
-
您能否提供代码示例来展示您描述的方法?您可能还想添加一个作业标签。
-
您的示例代码没有多大意义--
p不在newz的范围内,newf没有使用它的参数,您还没有定义res或X和Z数据类型,除此之外,我什至无法弄清楚您要做什么。