По мере эксперементирования с хаскелем наткнулся на следующее, странное (как по-моему), поведение.
foo =
let test = "asdf"
in let (a:test) = test
in test
main :: IO ()
main = putStrLn foo
Собственно, если запустить этот пример, скомпилировав его без оптимизаций, то он просто виснет. Если скомпилировать с O2, то пишет "test: <<loop>>". Я ожидал увидеть "sdf". Тип у foo выводится [t]. Подскажите пожалуйста, так и должно быть? Если да, то почему? Компилятор ghc 6.10.1.