Вот короткий транскрипт из GHCi:Что происходит, когда я сочиняю «шоу» и «читаю» в Haskell?
Prelude> :t read
read :: Read a => String -> a
Prelude> :t show
show :: Show a => a -> String
Prelude> :t show.read
show.read :: String -> String
Prelude> (show.read) "whales"
"*** Exception: Prelude.read: no parse
Когда я сочиняю show
и read
я могу только предположить, что GHC выбрал некоторый произвольный тип, который является одновременно Read
состоянии и Show
состоянии быть «промежуточного» типа.
Как он выбрал этот тип, и есть ли способ узнать, что это такое?
Вы можете убедиться сами, что он выбирает '()' довольно легко, тоже: ' ghci> (show. read) "()" ' –
Как насчет' read: String -> String'? Строка, переданная для чтения, должна быть указана внутри: 'show. (read: String -> String) $ "\" hello \ "" ' –