read int lists

Claus Reinke claus.reinke@talk21.com
Tue, 30 Apr 2002 23:24:16 +0100


>   Import two space separated columns of integers from file.
> -----------
> 
> 
> 1
> 2
> 
> 
> 3
> 4
> 
> 
> -----------
> , and it should convert to  ([1,2],[3,4]) :: ([Integer], [Integer])

-- working on lines makes life easier
mapFst f (x,y)  = (map f x,y)
getListLines ls = span (/="") $ dropWhile (=="") ls
lineToInteger l = read l::Integer
readIntegers    = (mapFst lineToInteger).getListLines

-- testing, 1..3
main = do
  cts <- readFile "data"
  let (first,rest) = readIntegers $ lines cts
      (second,_)   = readIntegers $ rest
  print (first,second)

Error checking (recommended!) and generalisation to more than
two columns left as an exercise..

Hth,
Claus
--
Haskell Communities and Activities Report (May edition)
All contributions are due in this week!
http://www.haskell.org/communities/