作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这需要 -XScopedTypeVariables
handle(\(_::SomeException) -> return Nothing)
handle((\_ -> return Nothing)::SomeException -> IO (Maybe Integer))
::
允许在函数体内注解类型,为什么需要编译指示来注解局部变量?
最佳答案
更一般地说:标准的 Haskell 不允许在模式中签名,但允许给任何表达式一个签名。以下都是有效的:
main :: IO ()
main = do
x <- readLn
print $ 5 + x
main' = (\y -> do {
x <- readLn;
print $ y + x } ) :: Int -> IO ()
main'' y = do
x <- readLn :: IO Int
print $ y + x :: IO ()
main''' = do
(x :: Int) <- readLn
print $ 5 + x
main''' = (\(y :: Int) -> do {
x <- readLn;
print $ y + x } ) :: Int -> IO ()
main'''' (y :: Int) = do
x <- readLn :: IO Int
print $ y + x :: IO ()
ScopedTypeVariables
介绍了这种可能性。
关于haskell - 为什么注释 lambda 类型不需要 -XScopedTypeVariables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908985/
我有一个函数(在模块中)返回 IO (Maybe a),其中 a 是 Serialize 的一个实例。 在我的主程序中,我这样调用它: msg <- fun token print msg 得到错
这需要 -XScopedTypeVariables handle(\(_::SomeException) -> return Nothing) 但这不是 handle((\_ -> return No
我是一名优秀的程序员,十分优秀!