key*_*998 1 haskell functional-programming list
我真的对Haskell并不陌生,也对如何实现for循环感到困惑,因为我知道我们需要对它们使用递归。
例如,我有一个列表[1,2,2,4,1],想要编写一个将每个都更改2为的函数3。我将如何去做呢?在Java中,我知道我会写以下内容
public void replace_two(List<Integer> ints) {
int i = 0;
for (int x: ints) {
if (x == 2) {
ints.set(i, 3);
}
i++;
}
System.out.println(ints);
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何用Haskell重现其他类似内容?
Jos*_*ica 11
forHaskell中没有一个循环的替代品。替换取决于您要执行的操作。在这种情况下,a map将是合适的:
replace_two = map go
where
go 2 = 3
go x = x
Run Code Online (Sandbox Code Playgroud)
它是这样的:
Prelude> replace_two [1,2,2,4,1]
[1,3,3,4,1]
Prelude>
Run Code Online (Sandbox Code Playgroud)