当前位置: 首页 > 知识库问答 >
问题:

当我尝试混合地板、分区和加法时,Haskell为什么会抱怨?

齐博厚
2023-03-14

我有一些代码:

seqMin a b = (floor (a / b)) - (floor (b / 2.0  ))
seqMax a b = (seqMin a b) + b
test = seqMax 6 3

当我以交互方式评估它时,我希望test为1。

当我评估代码时,我得到一个错误:

$ ghci split2.hs

GHCi,8.6.5版:http://www.haskell.org/ghc/ :? 有关编译Main(split2.hs,已解释)的帮助[1/1]

split2.hs: 3:8:错误:使用“seqMax”引起的含糊类型变量“a0”阻止了约束“(RealFrac a0)”的解决。相关绑定包括测试:: a0(split2.hs: 3:1绑定)可能的修复:使用类型注释来指定a0应该是什么。这些潜在的实例存在:实例RealFrac双-在“GHC”中定义。浮动”实例RealFrac浮动-在“GHC”中定义。浮动”...加上一个涉及范围外类型的实例(使用-fprint-潜在实例查看它们)在表达式中: seqMax 6 3在测试方程式:test=seqMax 6 3|3|test=seqMax 6 3 | ^^^^^^^^^^

split2.hs: 3:15:错误:由文字“6”引起的模糊类型变量“a0”阻止了约束“(编号a0)”的解决。相关绑定包括测试:: a0(split2.hs: 3:1绑定)可能的修复:使用类型注释来指定a0应该是什么。存在这些潜在实例:实例编号整数-在'GHC. Num'实例中定义编号双-在'GHC. Float'实例中定义编号Float-在'GHC. Float'中定义...加上另外两个...加上两个涉及范围外类型的实例(使用-fprint-潜在实例在“seqMax”的第一个参数中,即表达式中的“6”: seqMax 6 3在“test”的方程中: test=seqMax 6 3|3|test=seqMax 6 3|^失败,没有加载模块。

(请原谅我的格式。)

当试图找出为什么我得到了错误,我想到了另一个函数:

f x = (floor (x/2)) + x

当我评估它时,我得到一个错误:

> f 3

:2:1:错误:•使用“打印”导致类型变量“a0”不明确,从而无法解决约束(“显示a0”)。可能的修复方法:使用类型注释指定“a0”应该是什么。这些潜在的实例是存在的:实例显示顺序——在“GHC”中定义。Show'实例Show Integer--在GHC中定义。Show’实例Show a=

为什么会发生这种情况,我该如何解决它,以及我该如何在未来预防它?谢谢

共有1个答案

商品
2023-03-14

评论帮了大忙。我将/更改为div调用,现在可以工作了。谢谢大家!

 类似资料:
  • 问题内容: 我知道我们无法覆盖Java中的静态方法,但是有人可以解释以下代码吗? 如何在类中重写方法? 问题答案: 您在这里没有覆盖任何内容。要亲自查看,请尝试在类中添加注解,否则Java会引发错误。 你刚才定义在类中的函数称为,这是不同的(毫无关系)从功能类。 但是因为与父类中的函数具有相同的名称,所以它会 隐藏 [如Eng所指出。Fouad]。在运行时,编译器使用声明的引用的实际类来确定要运行

  • 问题内容: 我有一个div如下因素属性:。我也尝试过,但仍然出现以下错误: 语法错误:令牌’ ‘是表达式的第16列的意外令牌,始于。 为什么? 问题答案: 我发现了问题。相反,我应该写。pkoziowski.opensource是正确的,因为您不能使用条件语句,但是它们的含义是,您不能使用if语句或与此相关的任何控制流语句,因此您不能这样做:

  • 我很少使用HTML和JavaScript,几乎忘记了最基本的内容。错误是什么? DevTools未能加载SourceMap:无法加载的内容https://cdn.jsdelivr.net/npm/@tensorflow/tf。min.js。映射:HTTP错误:状态代码404,网络::错误\u HTTP\u响应\u代码\u失败

  • 所以我只想使用谷歌云视觉应用编程接口从图像中检测文本或标签。但是当我运行这段代码时,我总是得到: 但我不知道为什么。。。下面是我得到的完整json输出: 我的测试代码如下: 所以问题是。。此代码有什么问题?

  • 我有以下代码... 我得到... 我也试过 字符串的示例为 更新 存储的过程定义...

  • 本文向大家介绍当我们尝试覆盖Java中超类的最终方法时,会发生什么?,包括了当我们尝试覆盖Java中超类的最终方法时,会发生什么?的使用技巧和注意事项,需要的朋友参考一下 子类不能重写 在超类中声明为final的 任何方法 。如果我们尝试覆盖超类的最终方法,则会在Java中收到错误消息。 实现方法覆盖的规则 方法声明应与要重写的方法相同。 在尝试覆盖之前,该类(子类)应扩展另一个类(超类)。 子类