Вот мой код для подсчета строк и слов:
import System.IO
import Data.List
main = do
hSetBinaryMode stdin True
interact $ (\(w,l)->"line:"++(show l)++"\nwords:"++(show w)++"\n")
. foldl' (\(w,l) r-> w `seq` l `seq` (w+length r ,succ l) ) (0,0)
. lines
Это занимает около 10 секунд для запуска файла размером около 100 мегабайт Я сравнил его с аналогичными программами на Lua (9 с), awk (20 с) и wc -l -c
(0,6 с).
Почему этот код такой медленный? В чем может быть проблема?