This works

myAvg :: [Float] -> Float
myAvg [] = 0.0
myAvg xs = (foldr (+) 0.0 xs) / (fromIntegral (length xs) :: Float)

but is there a simpler way to "cast" the value of (length xs)?

On Fri, Feb 5, 2021 at 12:29 PM Ut Primum <utprimum@gmail.com> wrote:
Hi,
when you write 3 Haskell sees it as a "num" while the type of the length [1,2,3] is "int". So 3 and length [1,2,3] have not the same type.

Il ven 5 feb 2021, 19:23 Lawrence Bottorff <borgauf@gmail.com> ha scritto:
I can divide a float by an integer

>  2.4 / 3
0.7999999999999999

but why can I not do this?

< 2.4 / (length [1,2,3])
<interactive>:288:1-22: error:
    * No instance for (Fractional Int) arising from a use of `/'
    * In the expression: 2.4 / (length [1, 2, 3])

LB
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners