如何修复类型匹配错误

时间:2018-05-07 09:14:37

标签: haskell

我正在编写一个计算半径的函数,第一个输入是圆心,第二个是圆边缘的一个点。

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。我该如何解决这个错误?感谢

1 个答案:

答案 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)