Может кто-нибудь объяснит разницу между поведением в ghci следующих строк:
catch (return $ head []) $ \(e :: SomeException) -> return "good message"
возвращает
"*** Exception: Prelude.head: empty list
но
catch (print $ head []) $ \(e :: SomeException) -> print "good message"
возвращает
"good message"
Почему первый случай не поймал исключение? Почему они разные? И почему первый случай ставит двойную кавычку перед сообщением об исключении?
Спасибо.