我有这个伪代码,可以计算用户给出的数字的阶乘。
Process without_title
Define i, tmp, x As Integers;
tmp<-1;
Write "Enter a number to calculate its factorial";
Read x;
For i <- 1 Until x Do
tmp<-tmp * i;
EndTo
Write tmp;
EndProcess
现在我想使用列表理解在 Haskell 中实现相同的代码
import Data.IORef
factorial::Int -> Int
factorial x = [tmp|i<-[1..x], modifyIORef tmp (*i)]
抛出错误说tmp
变量未定义
如何定义tmp
变量以便我可以使用它?