- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是 Haskell 中的多态数据类型,由 Hugs 解释。我正在尝试创建 Show for Equality 的实例。
实例声明表示,如果 Show 中存在类型“a”,则 Show 中等于 a。它应该以“a = b”的形式将两个参数打印到构造函数 Equals a b。
data Equality a = Equals a a
instance (Show a) => Show (Equality a) where
show (Equals a b) = a ++ " = " ++ b
但是,在 Hugs 中输入诸如“(Equality 9 9)”之类的内容会产生:
错误 - C 堆栈溢出
因此,我尝试将“show (Equals a b)...”行缩进几个空格。我不确定有什么区别,但只是玩了一下,然后得到了这个:
Inferred type is not general enough
*** Expression : show
*** Expected type : Show (Equality a) => Equality a -> String
*** Inferred type : Show (Equality [Char]) => Equality [Char] -> String
任何人都可以解释为什么会发生这些错误,或者建议实现此显示实例的更好方法吗?
谢谢!
最佳答案
您的代码缩进不正确。它定义了一个空的 Show
实例:
instance (Show a) => Show (Equality a) where
和一个单独的顶级函数show
:
show (Equals a b) = a ++ " = " ++ b
类型等于[Char] -> [Char]
。因此,当您尝试使用 Show
实例时,default definition of show
from the Show
class被捡起。看代码:
showsPrec _ x s = show x ++ s
show x = showsPrec zeroInt x ""
您可以看到默认的 show
是根据 showsPrec
定义的,而 showsPrec
又是根据 show
定义的。这解释了为什么你的程序会进入无限循环。
要修复代码,请适当缩进,并添加对 show
的缺失调用以修复类型错误(这是由于您无法连接任意类型 a
带有字符串 - 您必须首先将 a
转换为字符串):
data Equality a = Equals a a
instance (Show a) => Show (Equality a) where
show (Equals a b) = show a ++ " = " ++ show b
测试:
*Main> show (Equals 9 9)
"9 = 9"
关于haskell - 为什么 Haskell (Hugs) 中的 Show 实例会导致堆栈溢出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7863176/
找了好久,继续问: https://gitter.im/timothycrosley/hug我找不到解决方案。 我正在寻找的是一种返回自定义 http 代码的方法,比如说 204,以防在 get 端点
我正在用 haskell 编写一个小型的 lisp 解释器。在此过程中,我定义了此数据类型,以获得较少键入的数字。 data Number = _Int Integer | _
是否可以为 python 更改 HUG 上的端口号?我有以下我正在尝试做的示例。API 默认为端口 8000,但我希望能够手动设置它。 @hug.post() def receive_json(req
我有两个不同的 div,一个向左浮动,一个向右浮动。它们比整个页面小得多(每个大约 400x200),因此两者相距甚远,紧贴着页面的边缘。我怎样才能让他们在中心彼此相邻?我尝试分别将边距设置为自动和大
喜欢this question ,我有一个 NSView,它是 NSWindow 的 contentView,它包含几个垂直堆叠的 subview 。其中一些是固定大小,一些可以通过公开按钮展开或折叠
我正在开发一个基本的 Hug API,我的一个函数需要一个文件。 Hug有上传文件的方法吗? 最佳答案 这个例子就是你要找的:https://github.com/timothycrosley/hug
这个问题在这里已经有了答案: How can I make a div not larger than its contents? (43 个回答) Shrink-to-fit div and pa
在注释为 hug api 调用的函数中,如何获取该调用的 header ? 最佳答案 简单、正常和最快的方法:Hug 提供 request 和 body (POST),如果它们作为参数存在 (http
下面是 Haskell 中的多态数据类型,由 Hugs 解释。我正在尝试创建 Show for Equality 的实例。 实例声明表示,如果 Show 中存在类型“a”,则 Show 中等于 a。它
我对 Python 还很陌生。我正在使用 Hug 构建一个简单的 API。我正在尝试使用装饰器来处理所有未处理的异常,如下面的代码所示。但看来我没有在装饰器中正确传递 Hug 所需的输入。 auth.
本题指的是这个jsFiddle中所示的情况. 如您所见,当前包含 svg 元素(白色背景)比它需要的宽度大约 70px。我可以使用 no JS 让这个 div 使其内容“收缩以适合”吗? 编辑:为了清
假设我有一个绝对定位在屏幕底部的 View 。该 View 包含一个文本输入。当文本输入获得焦点时,我希望 View 的底部触及键盘的顶部。 我一直在摆弄 KeyboardAvoidingView,但
我想从我的笔记本电脑中删除 tensorflow 和拥抱面部模型。 我确实找到了一个链接 https://github.com/huggingface/transformers/issues/861
我正在尝试使用 Hugging Face 'Transformers' 库提供的不同转换器架构对自定义数据(采用 csv 格式)进行二进制文本分类。我正在使用这个 Tensorflow blog po
我正在尝试使用 Hugging Face Transformers 库对法语进行 POS_TAG。在英语中,我能够给出一个句子,例如: The weather is really great. So
这个问题在这里已经有了答案: How to remove margin space around body or clear default css styles (7 个答案) 关闭 8 年前。
我有一个用 设置的 api import hug API = hug.API(__name__).http.base_url='/api' @hug.get('/hello-world', versi
看问题:通常,在交互式 Haskell 环境中,非拉丁 Unicode 字符(构成结果的一部分)被转义打印,即使语言环境允许此类字符(与通过 putStrLn 直接输出相反, putChar 看起来不
我在有关 Cocoa Autolayout 的 Apple 文档中找不到有关内容拥抱和压缩阻力之间差异的明确答案。 有人可以解释一下它们的用法和区别吗? 最佳答案 概念快速总结: 拥抱 => 内容不想
我试图在拥抱面部情绪分析预训练模型的帮助下获得评论的情绪。它返回类似 Token indices sequence length is longer than the specified maximu
我是一名优秀的程序员,十分优秀!