haskell - 无法定义采用 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,那么它可以工作。
这是为什么?谢谢!
解决方案
的类型签名(+)
是:
(+) :: Num a => a -> a -> a
这意味着两个参数(你的b
和c
)必须是相同的类型。
正如 Ismor 评论的那样,您可以使用fromIntegral
:
fromIntegral :: (Integral a, Num b) => a -> b
转换c
为并Int
让Float
您的函数进行类型检查。
推荐阅读
- amazon-web-services - AWS EMR 和 Apache Atlas - Atlas 元数据的持久存储
- vb.net - 我需要在 VB Windows 服务中使用 AspNetUser Validation
- python - 获取 conda 环境中用户安装包的列表(无依赖项)
- php - 允许在 Wordpress 上注册的用户无需通过电子邮件发送给用户的链接确认激活即可登录
- python - 我的路线 /favicon.ico 在我的烧瓶实例中不起作用
- python - 生成具有 N 列的数组,行和等于 1
- reactjs - 如何在spring boot +react中实现CSRF
- angular - 从过滤表角度打字稿中获取数据计数
- angular - 我们如何从 Spring Boot 项目中添加离子路由
- r - 在 Power Bi Desktop 中为 R 脚本使用两个不同的表