Какой тип выбирается для полиморфного выражения при печати?

Каков тип return "abc"при печати в ghci?

Суть вопроса в том, что он полиморфен в монаде:

ghci> :t return "abc"
return "abc" :: (Monad m) => m [Char]

и то, что будет напечатано, зависит от того, какая монада выбрана:

ghci> return "abc" :: Maybe String
Just "abc"

ghci> return "abc" :: [] String
["abc"]

но вот что на самом деле напечатано:

ghci> return "abc"
"abc"
5
задан Matt Fenwick 13 August 2012 в 17:05
поделиться