# Help

**Juan M. Duran
**
juan@inf.ufpr.br

*Tue, 26 Feb 2002 11:51:15 -0300 (BRT)*

The problem is fixed.
I fixed it using the do notation as Rijk said, it worked perfectly.
Now I got two more problems:
1) Should I use the do notation in order to write this result (type IO
[[Float]]) to a file? How?
2) The Glasglow compiler doesn let me compile one library because I use
the function readFloat (declare in the Prelude of Hugs 98), but Hugs lets
me, why?
Thanks
On Mon, 25 Feb 2002, Keith Wansbrough wrote:
>* > 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 <kw217@cl.cam.ac.uk>
*>* http://www.cl.cam.ac.uk/users/kw217/
*>* University of Cambridge Computer Laboratory.
*>*
*>*
*