我發現添加類型提示對於調試非常有用,但我不知道怎麼做,與和IO動作使用<-
的結果類型提示(< - )
action :: IO()
foo :: String --doesnt't compile
foo <- getLine
我發現添加類型提示對於調試非常有用,但我不知道怎麼做,與和IO動作使用<-
的結果類型提示(< - )
action :: IO()
foo :: String --doesnt't compile
foo <- getLine
你不能這樣做,因爲< - 不是一個聲明。您可以:
action :: IO()
action = do
foo <- getLine :: IO String
...
或者與{-# LANGUAGE ScopedTypeVariables #-}
:
action :: IO()
action = do
foo :: String <- getLine
...
隨着-XScopedTypeVariables
,你可以有(foo :: String) <- getLine
。
爲了完整性我想補充
action :: IO()
action = do
foo <- getLine
let bar :: String
bar = foo
print bar
這是笨重,但can be useful如果你發現自己被困在IO單子,如果你是編程GUI它可以發生。