Я хочу использовать двусмысленный тип a
в функции следующим образом, но он терпит неудачу.Невидимая подпись типа в Haskell
foo :: (Read a, Show a) => IO()
foo = print =<< (readLn :: IO a)
Целью является получение разных выходов относительно заданной сигнатуры типа при фактическом вызове.
>>> foo :: Double => IO()
34 -- user input
34.0 -- output
>>> foo :: Int => IO()
34 -- user input
34 -- output
Как я могу управлять этим?
К сожалению, я изменил функцию выборки. – user3749167