【发布时间】:2010-10-20 20:25:55
【问题描述】:
据我所知,Haskell 没有全局状态,所以有没有办法编写一个函数 f 来返回 f(n - 1) + 1,其中 n 是函数调用的数量, f(1) = 0.
它不应该接受任何参数并且像func f一样使用
Prelude> f ()
0
Prelude> f ()
1
【问题讨论】:
-
如果
n是函数调用的编号(我假设您的意思是该函数之前被调用的频率?)那么函数的参数是什么?如果值应该依赖于n而不是参数,那么f 1 = 0怎么可能? -
我的意思是当你第一次调用函数时它返回0
-
@sepp2k 对,应该返回调用的号码
-
我不确定答案,但这会使您的方法不纯或有副作用
-
我想重申这是一个非常un-Haskelly 设计问题。您应该使用状态单子。