gpt4 book ai didi

haskell - 自然数序列生成器

转载 作者:行者123 更新时间:2023-12-02 16:46:48 25 4
gpt4 key购买 nike

据我所知,Haskell 没有全局状态,所以有没有办法编写一个函数 f 来返回 f(n - 1) + 1,其中 n 是函数调用的次数,f(1) = 0.

它不应该接受任何参数,并且像 func f 一样使用

Prelude> f () 
0
Prelude> f ()
1

最佳答案

如果不使用像 unsafePerform 这样的技巧,就不可能定义一个可以像示例中所示那样调用的函数。但是,可以定义一个 IO 操作来执行您想要的操作,并且可以像这样使用:

Prelude> x <- f 
Prelude> x
0
Prelude> x <- f
Prelude> x
1

这是一个使用 IORef 执行您想要的操作的示例程序:

import Data.IORef

main = do counter <- newIORef 0
let f = do count <- readIORef counter
modifyIORef counter (+ 1)
return count
x <- f
print x
x <- f
print x

关于haskell - 自然数序列生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3981995/

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