如何讓我的GHCI原型設計更加強大?我被鎖定在IO monad中,只是因爲我從文件中讀取了數據。每次都需要拼接liftM
,這有點令人沮喪。在原型設計過程中逃脫IO Monad
λ: let q xml = fmap (filterChildrenName f) $ elChildren xml
λ: liftM q xml
[[Element {elName = QName {qName = "link", qURI = Nothing, qPrefix = Nothing}, elAttribs = [], elContent = [Text (CData {cdVerbatim = CDataText, cdData = "http://planet.haskell.org/", cdLine = Nothing})], elLine = Nothing}]]
λ
您可以有效地將您在GHCi中運行的每個命令都視爲處於IO monad中,而不需要解除。 –
你也可以使用'Control.Applicative'。它爲fmap('<$>')引入了一個別名,它使事情看起來更漂亮一點,並且還引入了'<*>',您可以使用它來代替fmap(再次,使事情看起來更好)。 – Cubic