首页 > 解决方案 > 无法定义采用 Int 和 Float 的函数

问题描述

a.hs文件有:

a :: Float -> Int -> Int
a b c = b + c

在ghci中加载它,错误是:

Couldn't match expected type ‘Int’ with actual type ‘Float’ 

Couldn't match expected type ‘Float’ with actual type ‘Int’

如果参数和结果都是 int 或 float,那么它可以工作。

这是为什么?谢谢!

标签: haskelltype-mismatch

解决方案


的类型签名(+)是:

(+) :: Num a => a -> a -> a

这意味着两个参数(你的bc)必须是相同的类型。

正如 Ismor 评论的那样,您可以使用fromIntegral

fromIntegral :: (Integral a, Num b) => a -> b

转换c为并IntFloat您的函数进行类型检查。


推荐阅读