【发布时间】:2016-03-21 03:07:32
【问题描述】:
我对这些感到困惑:
当我这样写
main = do
putStrLn . printf "%f" $ 2.3
会导致
(PrintfArg a0)没有因使用printf而产生的实例类型变量
a0不明确
代码在 GHCi 中运行良好,当我在终端中使用 runhaskell 时发生此错误。
所以我写了
putStrLn . printf "%f" $ (2.3 :: Double)
没关系,但我不知道原因。
不要"%f"推断2.3属于类型Double?
据我所知,putStrLn 的类型为String -> IO(),当2.3 未被Double 修饰时,printf 的结果不能转换为String 吗?
【问题讨论】:
标签: haskell printf type-inference