gpt4 book ai didi

loops - Haskell - for 循环

转载 作者:行者123 更新时间:2023-12-01 09:21:33 24 4
gpt4 key购买 nike

如果我想表达[只是一个简单的例子]之类的东西:

int a = 0;
for (int x = 0; x < n; x += 1)
a = 1 - a;

我应该在 Haskell 中做什么,因为它没有变量概念? (也许错了,见: Does Haskell have variables?)

最佳答案

有几个选项。首先,您可以用朴素递归重写问题:

loop :: Int -> Int
loop n = loop' n 0
where loop' 0 a = a
loop' n a = loop' (n - 1) (1 - a)

接下来,您可以将递归重述为折叠:
loop :: Int -> Int
loop n = foldr (\a _ -> 1 - a) 0 [0..n]

或者您可以使用 State模拟 for 循环:
import Control.Monad
import Control.Monad.State

loop :: Int -> Int
loop n = execState (forM_ [0..n]
(\_ -> modify (\a -> 1 - a))) 0

关于loops - Haskell - for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39131812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com