Fop*_*tin 4 profiling haskell memory-management
我有一个使用大量字符串的Haskell代码,同时对其进行操作,看起来代码使用大量内存来存储Lists [].这个问题的一个解决方案是使用Data.ByteString.Lazy而不是String,但是
在做这件事时我要关心什么?
代码的哪一部分必须仔细查看:折叠,地图,......?
谢谢你的答复
该OverloadedStrings扩展可以,如果你使用GHC并用了很多字符串字面量的代码转换得心应手.只需将以下内容添加到源文件的顶部:
{-# LANGUAGE OverloadedStrings #-}
Run Code Online (Sandbox Code Playgroud)
而且您不必B.pack在代码中使用任何字符串文字.您可以拥有以下内容,例如:
equalsTest :: B.ByteString -> Bool
equalsTest x = x == "Test"
Run Code Online (Sandbox Code Playgroud)
如果没有扩展名,则会出现错误,因为您无法使用==a ByteString和a [Char].使用扩展名,字符串文字具有类型(IsString a) => a,并且ByteString是实例IsString,因此"Test"这里键入为a ByteString并且没有错误.