如何在Haskell中对以下伪代码进行编码?在Haskell中的循环中
x=0
for (i from 0 to 100):
j=0
while (f(i,j) >0):
x+= f(i,j)
j+=1
(f
一些不重要的功能)
我想出了这样的事情:
a= [x| i<-[0..100], let s = takeWhile (\k-> (f i k > 0)) [0..],
j<- s, let x = f i j ]
然后Sum a
做的工作,但我需要计算f i j
两次这是一个有点多余。
这可以用f
完成,只计算一次或者一些运行得更快的更好的代码?