
I thing that wont works, look: contents :: IO [Char]
parser :: Integral a => [Char] -> [a]
control :: [Float] -> [[Float]]
The two problems are: 1) The input of parser. Doesnt match with the type of input 2) The input of control (or the output of parser). Doesn match with the type of the next function.
The "do" notation used by Rijk fixes the first problem; you should try it.
For the second problem, you want to convert an Integral to a Float - but are you sure? Integers aren't floating point numbers!
If you are sure, then do something like
main =
do {
contents <- input "twoboxes.dat"
return (control (map fromInteger (parser contents)))
}
fromInteger has the type Num a => Integer -> a, and since Num Float and Integral Integer, all your type constraints will be satisfied.
HTH.
--KW 8-)
--
Keith Wansbrough