作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试定义一个 data type family ,其参数之一导致空元组 ()
的类型,但它无法编译。这是一个最小的工作示例:
{-# LANGUAGE TypeFamilies #-}
data family F a
data instance F Int = ()
抛出的编译器错误显示“内置语法的非法绑定(bind):()
”。为什么我会收到此错误,即使我没有尝试更改 ()
的定义,而是将其设置为某些计算(类型系列的评估)的输出?
无论如何,当 ()
改为 Bool
时编译的程序。
最佳答案
对于数据族,您应该在等式右侧提供 ADT 或 GADT 定义。 ()
不是构造函数的有效定义。 数据实例 F Int = Bool
声明了一个名为 Bool
的构造函数,该构造函数可以工作,但与类型 Bool
没有任何关系>。只是 Bool
可用作构造函数名称。
您想要做的事情可以通过类型族来实现:
type family F a
type instance F Int = ()
-- or in closed form
type family F a where
F Int = ()
或者您可以为数据实例提供右侧,这相当于 ()
:
data instance F Int = FUnit
关于haskell - 数据族实例非法绑定(bind)到内置语法: (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31407256/
在C中,protocol family被提及为第一个参数。 例如: ipv4 的套接字(AF_INET,,) socket(AF_PACKET,,) 用于数据包嗅探 Python 支持三个地址族:AF
根据 vfork() 手册页,如果 vfork() 在调用 _exit 或 exec 之前修改除 pid_t 之外的任何数据,则行为未定义系统调用系列。 由此我了解到,如果vfork()创建的子进程调
我是一名优秀的程序员,十分优秀!