我刚才意识到写这个是合法的:
let _ = sum [1..100]
in "Hello"
Run Code Online (Sandbox Code Playgroud)
let-binding似乎绝对没有任何作用.
但现在我想知道这里的确切语义.可以编写一个包含_绑定的程序,但删除该绑定会明显改变所述程序的含义吗?
基本上,我想知道自动删除这样的绑定是否安全.据我所知,这种绑定的价值不可能影响任何事情.然而,似乎假设它的类型可能会影响其他东西.任何人都可以构建一个例子吗?
jwo*_*der 18
这是一个例子.通过_绑定,输出是8.0,但没有它,它是8.(不可否认,这不是一个很大的区别,但我相信这可以作为更实质性的基础.)
main :: IO ()
main = let x = 5
_ = asTypeOf x 6.0
in print $ x + 3
Run Code Online (Sandbox Code Playgroud)
Dou*_*ean 10
我认为在这个例子中x有类型Num a => [a],但没有第二行它会(Num a, Monad m) => m a.但是,请不要在此计算机上进行GHCi检查.
let x = return 3
_ = sum x
in x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |