【发布时间】:2019-07-01 21:52:56
【问题描述】:
substitute':: (Eq a)=> a -> a -> [a] -> [a]
substitute' x y = map substituteOne
where
substituteOne x' | x == x' = y
| otherwise = x'
所以,这个函数的重点是,它接受两个类型 a 的输入和一个类型 a 的列表,并将列表 [a] 中来自“第一个”a 的所有元素替换为“第二个”a。至少任务描述是这么说的。
我已经实现了递归版本,但还需要一个带有 where 子句的函数。
所以这就是它的解决方案。不知何故我有问题:
- 在没有任何参数的情况下,第二行中的substituteOne如何工作?
- 我们在哪里提供一个列表作为输入?或者我们在哪里说明我们如何处理该列表?我的意思是编译和执行它可以工作,但不知何故我看不到它
- 什么是 x' ?它从来没有在任何地方定义,我们只是以某种方式开始使用它(也许也指问题 1)
- map 需要一个函数和一个列表,它才能工作。这里我们有地图功能_。可能指的是 2.,但是替代项 x' 的输出是什么?
如果需要,结果如下所示:
substitute' 5 10 [1, 5, 2, 5, 3, 5]
[1,10,2,10,3,10]
【问题讨论】:
标签: haskell recursion functional-programming