2012-07-27 98 views
1

完整的代碼沒有實例在https://github.com/gertcuykens/haskell-design哈斯克爾的MonadThrow

application :: MVar ServerState -> WS.Request -> WS.WebSockets WS.Hybi10() 
application state rq = do 
    --snip-- 
    let a = ("code","test") 
    e <- fbEmail $ (\(x,y) -> (C.pack x, C.pack y)) a 

給了我錯誤

src/Server.hs:60:10: 
    No instances for (resourcet-0.3.2.2:Control.Monad.Trans.Resource.MonadThrow 
         (WS.WebSockets WS.Hybi10), 
         resourcet-0.3.2.2:Control.Monad.Trans.Resource.MonadUnsafeIO 
         (WS.WebSockets WS.Hybi10), 
         monad-control-0.3.1.3:Control.Monad.Trans.Control.MonadBaseControl 
         IO (WS.WebSockets WS.Hybi10)) 
     arising from a use of `fbEmail' 
    Possible fix: 
     add instance declarations for 
     (resourcet-0.3.2.2:Control.Monad.Trans.Resource.MonadThrow 
     (WS.WebSockets WS.Hybi10), 
     resourcet-0.3.2.2:Control.Monad.Trans.Resource.MonadUnsafeIO 
     (WS.WebSockets WS.Hybi10), 
     monad-control-0.3.1.3:Control.Monad.Trans.Control.MonadBaseControl 
     IO (WS.WebSockets WS.Hybi10)) 
    In the expression: fbEmail 
    In a stmt of a 'do' block: 
     e <- fbEmail $ (\ (x, y) -> (C.pack x, C.pack y)) a 
    In the expression: 
     do { WS.acceptRequest rq; 
      WS.getVersion >>= liftIO . putStrLn . ("Client version: " ++); 
      sink <- WS.getSink; 
      msg <- WS.receiveData; 
      .... } 

我到底想達到什麼是喜歡的東西

更換

let prefix = "Facebook code" 
let client = (T.drop (T.length prefix) msg, sink) 

​​

回答

3
e <- liftIO $ fbEmail $ (\(x,y) -> (C.pack x, C.pack y)) a