dam*_*iya 6 monads haskell type-inference ghci
这是键入return 1GHCi 时得到的。
> return 1
1
Run Code Online (Sandbox Code Playgroud)
由于我未指定的类型return,因此类型return 1为Monad m, Num a => m a
1即使没有实例,GHCi如何显示Show?
Monad m => m默认为IO。
然后,将执行IO操作,不执行I / O,并返回值。
Ghci有两种输出操作模式:评估值具有类型时IO a和没有类型时。在第一种情况下,将执行IO操作,并a显示该操作产生的类型值。在第二种情况下,仅显示评估值。
由于您位于Ghci中,因此类型return 1 :: (Monad m, Num a) => m a实际上是IO Integer。m默认为IO,a默认为Integer,因此Integer 1显示。
使用启用显示您类型的GHCi ghci> :set +t,然后尝试return 1.0。它返回Double,并且Double还有Show实例。
> return 1
1
it :: Integer
> return 1.0
1.0
it :: Double
> return "3"
"3"
it :: [Char]
> print "3"
"3"
it :: ()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |