haskell - Haskell 类型解释
问题描述
我不理解以下代码的简单类型错误
addCustom :: Num a => a -> a
addCustom a = a + 1.2
它抛出
无法从字面“1.2”推导出(小数 a)
我不知道为什么。
解决方案
你的类型签名
addCustom :: Num a => a -> a
声明addCustom
适用于所有数字类型a
,包括整数。
但这addCustom (0 :: Integer)
将是一个错误:a + 1.2
不能用整数算术完成,因为1.2
它不是整数值(它是小数)。
所以你需要做的就是改变你的函数体:
addCustom a = a + 1
(这有效,因为1
存在于所有数字类型中)或更改类型签名:
addCustom :: Fractional a => a -> a
(这限制addCustom
了它只能与小数类型一起使用,其中1.2
是有效值)。
推荐阅读
- javascript - extjs中多选组合框中的选定值
- ios - iOS Swift 4: Uploading Videos to YouTube
- c# - Using generic parameter as base class
- asp.net - ActionMailer.net/ActionMailerNext - 如何确认电子邮件是否已发送?
- javascript - 我可以使用 lambda 调用将路径参数传递给另一个 lambda 函数吗?
- google-maps - 检查坐标是否包含在谷歌地图的圆圈内?
- javascript - Udacity 谋杀之谜 - javascript 不保存变量
- ios - 如何在swift 3.0的uitableviewcell中合并两个结构并打印两者的值
- python - UnicodeDecodeError 读取 CSV 文件
- javascript - AssertionError [ERR_ASSERTION]:mongodb 中需要处理程序(func)