
Aaron, Look at the following snippet:
length ([0,60..359] :: [Double]) 7
Basically, the Enum instance for Double is done differently than for Int (I
don't remember why exactly). If you take off the type signature, it uses Int
by default. When you use map, it implicitly converts that to a Double.
Hope that helps.
Michael
On Thu, Jun 18, 2009 at 12:35 AM, Aaron MacDonald
For some reason, the map function returns a list that has one more element than my input list.
My input list is a range defined by [0, 60..359] (should translate into [0,60,120,180,240,300]).
The function I'm giving to map is defined this way: ----- degreesToRadians :: Double -> Double degreesToRadians degrees = degrees * (pi / 180) -----
This is how I'm calling map overall: -----
map degreesToRadians [0,60..359]
[0.0,1.0471975511965976,2.0943951023931953,3.141592653589793,4.1887902047863905,5.235987755982989,6.283185307179586] -----
As you can hopefully see, there are seven elements instead of six. Getting the length confirms this: -----
length [0,60..359] 6 length $ map degreesToRadians [0,60..359] 7
I do not seem to get this behaviour with the length if I either substitute the degreesToRadians function or substitute the [0,60..359] range.
P.S. Is there a built-in function to convert degrees to radians and vice-versa? _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners