如何使我的GHCI原型更加健壮?仅仅因为我从文件中读取数据,我就被锁在IO monad中。这是一个有点令人沮丧的是,必须缝纫liftM每次。
λ: 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}]]
λ发布于 2014-02-22 15:28:45
由于gchi在IO中,所以可以使用<-而不是let绑定变量。
xml <- loadFromFile
q xml发布于 2014-02-25 13:55:28
let和<-的主要缺点是在重新加载后丢失所有绑定。要在源文件中使用永久绑定,还可以使用来自unsafePerformIO :: IO a -> a的System.IO.Unsafe。它在生产代码中是非常不可靠的(只有当您真正知道自己在做什么时--例如,一些低级的优化和黑客操作),但是在原型开发过程中是可以接受的。
https://stackoverflow.com/questions/21956103
复制相似问题