內構建我有這個片段的函數:哈斯克爾:一元lambda函數
mapM (\x -> do t' <- t; return $ strSwop "if0" ("if" ++ show x) t') [0..(n-1)]
隨着
strSwop :: String -> String -> String -> String
t :: IO String
它可以作爲預期,但我不喜歡IO構建withing拉姆達。 它如何寫成不同? 我剛剛從monad中出來,只是爲了再次包裝下一行。感覺醜陋。
如果我做這種方式:
mapM (\x -> t >>= strSwop "if0" ("if" ++ show x) t) [0..(n-1)]
它抱怨(顯然)關於strSwop的返回簽名:( strSwop只是一個字符串替換功能 有沒有辦法正確地寫這個? 感謝
- 編輯 -
就想通了......
作品出來:
mapM (\x -> liftM (strSwop "if0" ("if" ++ show x)) t) [0..(n-1)]
什麼是「IO結構」? – newacct 2012-02-24 04:53:46
題外話:在stackoverflow上,接受答案通常被認爲是禮貌的(點擊答案評分下面的勾),這有助於你解決問題。它不僅可以幫助回答問題的用戶,還可以幫助您,因爲它爲其他用戶提供瞭解決問題的動力。 – Vitus 2012-02-24 13:17:46