haskell - • 没有因使用“/”而产生的 (Fractional Int) 实例
问题描述
test :: Int -> Int -> Int
test x y = x/y
main = print(test 20 20)
错误:
main.hs:2:12: error:
• No instance for (Fractional Int) arising from a use of ‘/’
• In the expression: x / y
In an equation for ‘test’: test x y = x / y
请帮助我,我是 Haskell 的初学者并想学习它,即使我不知道在哪里可以使用它以及如何在某个地方实现它,我已经知道 javascript、java、php 和 lua,但我最擅长javascript和lua,如果你能回答我我在哪里可以实现haskell,我怎样才能很好地使用它,谢谢:) PS我已经检查了一些这样的帖子,但我并没有发现它们有帮助,我需要更简单的解释,谢谢
解决方案
你不能Int
用 来划分两个数字(/) :: Fractional a => a -> a -> a
。如类型签名所示,这用于小数。AnInt
不是一个数字,而是一个数字。Fractional
Integral
您可以使用div :: Integral a => a -> a -> a
或quot :: Integral a => a -> a -> a
代替:
test :: Int -> Int -> Int
test = div
不过这里不用写test = div
,可以div
直接使用。
功能div
和quot
不等价。quot
被截断为零,而div
被截断为负无穷大。如果除以正数,那么这无关紧要,但如果分子或分母为负数,则可以得出不同的结果。例如:
Prelude> div 5 (-2)
-3
Prelude> quot 5 (-2)
-2
推荐阅读
- android - android room暂停插入成功但不返回id
- asp.net - 在 Acumatica 中,我在发布自定义时遇到错误
- javascript - 在 Javascript 中渲染键的值
- matlab - 创建一个包含矩阵*矩阵乘积的行向量
- lilypond - 带有反向符号的 Lilypond 分数
- python - 每个组中包含特定值的新数据框
- google-cloud-platform - 如何从控制台传递和访问对 pyspark 作业提交的争论?
- azure - 400 客户端错误:对带有嵌套 ARM 模板的 url 的错误请求
- docker - 在 Alpine Linux 下编辑/隐藏 Nginx Server 标头
- svg - 如何在 Three.js 中的 OBJ 文件上应用 SVG 纹理