Tenho esse pseudocódigo que calcula o fatorial de um número fornecido pelo usuário.
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
Agora eu gostaria de implementar o mesmo código em Haskell usando compreensões de lista
import Data.IORef
factorial::Int -> Int
factorial x = [tmp|i<-[1..x], modifyIORef tmp (*i)]
Lança erro dizendo tmp
variável não definida
Como defino a tmp
variável para poder utilizá-la?