我正在编写一个计算半径的函数,第一个输入是圆心,第二个是圆边缘的一个点。
type Coord = (Int,Int)
getRadius :: Coord -> Coord -> Float
getRadius (x0,y0) (x1,y1) = sqrt(sqrX+sqrY)
where sqrX = (x1-x0)*(x1-x0)
sqrY = (y1-y0)*(y1-y0)
这是我的代码,但是当我编译它时,错误显示“无法将预期类型'Float'与实际类型'Int'匹配。” 我认为输出应该是浮点数而不是int。我该如何解决这个错误?感谢
答案 0 :(得分:2)
问题是sqrt接受浮点数,但fromIntegral将有助于显式地将整数转换为浮点数:
getRadius :: Coord -> Coord -> Float
getRadius (x0,y0) (x1,y1) = sqrt(fromIntegral (sqrX+sqrY))
where sqrX = (x1-x0)*(x1-x0)
sqrY = (y1-y0)*(y1-y0)