如何在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
完成,只計算一次或者一些運行得更快的更好的代碼?