在代码片段s <- socket :: IO (Socket Inet Stream TCP)
中,以&#34; ::&#34;开头的子表达式是什么?意思?
我能理解&#34; ::&#34;在socket :: (Family f, Type t, Protocol p) => IO (Socket f t p)
中用于函数签名,但在&#34; ::&#34;在这种情况下用于动作调用。
答案 0 :(得分:4)
它只是意味着“将此表达式用于生成此类型”。令人费解?不是,请考虑
x = 0
x是什么类型的? Num a => a
。如果您特别需要Int
?
x = 0 :: Int
这就是它的全部。它根本不是特定于套接字的,它是标准Haskell语法的一部分。