Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 在类型理论中,什么类型对应于xor b?_Haskell_Functional Programming_Category Theory_Curry Howard - Fatal编程技术网

Haskell 在类型理论中,什么类型对应于xor b?

Haskell 在类型理论中,什么类型对应于xor b?,haskell,functional-programming,category-theory,curry-howard,Haskell,Functional Programming,Category Theory,Curry Howard,最后,Bartosz Milewski举例说明了逻辑、范畴理论和类型系统之间的对应关系 我在想什么对应于逻辑异或运算符。我知道 a异或b==(a∨ (b)∧ (a)∧ b) ==(a)∨ (b)∧ (a)∨ (b) 所以我只解决了部分问题:a xor b对应于(要么a b,要么???)。但缺失的两种类型是什么 似乎如何编写xor实际上归结为如何编写而不是 那么什么是,-a?我的理解是,如果存在类型为a的元素(至少一个),则a在逻辑上是正确的。因此,要使非a为真,a应为假,即它应为Void。因此

最后,Bartosz Milewski举例说明了逻辑、范畴理论和类型系统之间的对应关系

我在想什么对应于逻辑异或运算符。我知道

a异或b==(a∨ (b)∧ (a)∧ b) ==(a)∨ (b)∧ (a)∨ (b)
所以我只解决了部分问题:
a xor b
对应于
(要么a b,要么???)
。但缺失的两种类型是什么

似乎如何编写
xor
实际上归结为如何编写
而不是

那么什么是
,-a
?我的理解是,如果存在类型为
a
的元素(至少一个),则
a
在逻辑上是正确的。因此,要使
非a
为真,
a
应为假,即它应为
Void
。因此,在我看来,有两种可能性:

(要么是a Void,要么是b Void)——在这里我将“not b”重命名为“b”
(要么是空白b,要么是空白a)——在这里,我将“非a”重命名为“a”
但在最后一段中,我觉得我只是误会了


(后续问题。)

否定的标准技巧是使用
->Void
,因此:

type Not a = a -> Void
a
本身是一个可证明的无人居住类型时,我们可以精确地构造该类型的总居民;如果存在
a
的任何居民,我们无法构建此类型的总居民。听起来像是否定

内联,这意味着您对xor的定义如下:

type Xor a b = (Either a b, (a, b) -> Void) -- (a ∨ b) ∧ ¬(a ∧ b)
type Xor a b = (Either a b, Either (a -> Void) (b -> Void)) -- (a ∨ b) ∧ (¬a ∨ ¬b)

你的第二个版本对我来说似乎有点尴尬,因为这两个
中的任何一个都必须走相反的方向。第三个公式:
或者(A,b->Void)(b,A->Void)
@dfeuer,你能详细说明一下吗?我不明白你是在强调一个不准确的地方,还是仅仅因为在这4个可能的选择中,丹尼尔选择的那些比其余的好/丑。@Enrico,这一点并不准确。但用它来得到其他公式需要额外的案例分支来显示荒谬。xor的另一种可能解释是“不同构”@luqui为什么
Int
[Int]
不是同构的(是吗?),但它们都是居住的,因此都是真的,因此它们是xor到false。我想情况不是这样的,我的错在哪里?嗯,是的,我的错。我想我的意思是“不等价”,在逻辑意义上是等价的
(A->B)和(B->A)
。这仍然合法地符合布尔逻辑中的xor,但它在直觉上比Daniel答案中的xor弱。