Почему getArgs
вычисляется после аргумента метода fmap
?
main::IO()
main=do
fpath<-fmap head getArgs
putStrLn fpath
Я получаю ошибку:
Exception: Prelude.head: empty list
Кажется, он применяет голову к чему-то, что еще не было вычислено.
Сначала я предположил, что это может быть еще одно правило о лени, что я не знаю, что плохо знаком с Хаскеллом, поэтому я попробовал:
a<-fmap head getLine
# без проблем
a<-fmap head (readFile [filename])
# опять не проблема
Так почему же getArgs
особенный, который оценивается после?