2012-12-07 46 views
1

我發現添加類型提示對於調試非常有用,但我不知道怎麼做,與和IO動作使用<-的結果類型提示(< - )

action :: IO() 
    foo :: String --doesnt't compile 
    foo <- getLine 

回答

11

你不能這樣做,因爲< - 不是一個聲明。您可以:

action :: IO() 
action = do 
    foo <- getLine :: IO String 
    ... 

或者與{-# LANGUAGE ScopedTypeVariables #-}

action :: IO() 
action = do 
    foo :: String <- getLine 
    ... 
3

隨着-XScopedTypeVariables,你可以有(foo :: String) <- getLine

3

爲了完整性我想補充

action :: IO() 
action = do 
    foo <- getLine 
    let bar :: String 
     bar = foo 
    print bar 

這是笨重,但can be useful如果你發現自己被困在IO單子,如果你是編程GUI它可以發生。