【发布时间】:2021-11-09 13:59:03
【问题描述】:
我有一个 Haskell 程序,它从命令行接受 2 或 3 个 Ints:
-- test.hs
main :: IO ()
main = do
args <- fmap (read . head) getArgs
case args of
[x,y,a] -> doGeneration x y a
[x,y] -> doGeneration x y 10
_ -> usage
但是,当我使用参数运行它时:
$ ./test 100 200
divide: Prelude.read: no parse
为什么?
【问题讨论】:
-
对于像
read这样具有“多态返回类型”的函数,最好使用visible TypeApplications指定要反序列化的类型:read @Int