用haskell处理一个文本文件,很简单的字符串split join
import System.IO
import Control.Monad
import Data.List
import Data.List.Split
main=do
handle<-openFile "20131008.test" ReadMode
contents<-hGetContents handle
let result= process contents
write result
hClose handle
write :: [Char] -> IO ()
write output=do
h<-openFile "20131008.csv" WriteMode
hPutStr h output
hClose h
process istr=intercalate "\n" (map rep_spt (lines istr))
rep_spt istr=intercalate ";" (splitOn "," istr)
对应的python版本是
import string
f_r=file('20131008.test','r')
a=f_r.readlines()
result=[]
for i in a:
result.append(string.join(i.split(','),';'))
f_w=file('20131008.csv','w')
f_w.writelines(result)
处理一个1.7g的文件,haskell编译好的用了4分钟,而python则是50秒。请问haskell代码是哪里写错了吗?谢谢。