[Haskell-cafe] striping non-alphanumericals
Joerg Fritsch
fritsch at joerg.cc
Wed Dec 11 21:37:55 UTC 2013
I have the following code snippet:
import System.IO
import Data.String.Utils
main = withFile "test.txt" ReadMode $ \handle -> do
xs <- getwords handle
sequence_ $ map putStrLn (escapeRe xs)
getwords :: Handle -> IO [String]
getwords h = hGetContents h >>= return . words
What I want to to there is to get i.e. "word," or "word!" etc. and arrive at
"word". I understand that escapeRe may do this. However, I always get some
sort of mismatch errors like this:
test.hs:6:38:
Couldn't match type `Char' with `[Char]'
Expected type: [String]
Actual type: String
In the return type of a call of `escapeRe'
In the second argument of `map', namely `(escapeRe xs)'
In the second argument of `($)', namely
`map putStrLn (escapeRe xs)'
test.hs:6:47:
Couldn't match type `[Char]' with `Char'
Expected type: String
Actual type: [String]
In the first argument of `escapeRe', namely `xs'
In the second argument of `map', namely `(escapeRe xs)'
In the second argument of `($)', namely
`map putStrLn (escapeRe xs)'
Now I have three questions:
1. Is escapeRe the right function to use here?
2. What do I do wrong?
3. I read in the Real World Haskell book that actually all these
file/string operations are very very slow. The recommendation is to work
with bytestrings instead. Is there any (fast) way to strip
non-alphanumericals from bytestrings?
Thanks,
--Joerg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20131211/98992b46/attachment.html>
More information about the Haskell-Cafe
mailing list