【发布时间】:2022-12-03 09:11:33
【问题描述】:
我只是想澄清一下我对来自积分输入哈斯克尔。
这两个欧氏距离函数的输出是相同的,那么输入 fromIntegral 有什么意义呢?就像它们都给出欧氏距离的浮点值一样。
另外,对于使用 fromIntegral 类型的函数 distance2 的类型定义,为什么它是 (Floating a1, Integral a2) 然后 => (a2, a2) -> (a2, a2) -> a1? 我只是不太明白这里的解释。
distance2 :: (Floating a1, Integral a2) => (a2, a2) -> (a2, a2) -> a1
distance2 (x1, y1) (x2, y2)
= sqrt (fromIntegral ((x2-x1)^2 + (y2 - y1)^2))
distance3 :: Floating a => (a, a) -> (a, a) -> a
distance3 (x1, y1) (x2, y2)
= sqrt ((x2-x1)^2 + (y2 - y1)^2)
谁能帮忙解释一下,谢谢:)
【问题讨论】:
-
fromIntegral不是类型;它是(Integral a, Num b) => a -> b类型的函数。 -
输出不一样,试试
distance2 (0,0) (9000,9011) - distance3 (0,0) (9000,9011) :: Float。
标签: haskell