Как закодировать следующий псевдокод в 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
, рассчитанного только один раз или несколько лучших кодов, которые работают быстрее?