我一直在研究依赖types,我理解以下内容: 为什么通用量化被表示为依赖函数types。 ∀(x:A).B(x)意思是“对于所有typesA x有一个typesB(x) ” 。 因此,它被表示为一个函数,当给定的任何值typesA返回typesB(x) 。 为什么存在量化表示为从属对types。 ∃(x:A).B(x)表示“存在typesA的x ,其typesB(x) ” 。 因此,它被表示为一个对,其第一个元素是一个特定值x的A型A而其第二个元素是一个B(x)型的值。 另外:有趣的是,通用量化总是与物质含义 一起使用,而存在量化总是与逻辑连接一起使用 。 无论如何,维基百科有关依赖types的文章指出: 与依赖types相反的是依赖对types , 依赖和types或sigmatypes 。 它类似于联产品或不相交的联合。 一个对types(通常是一个产品types)是如何类似于不相交的联合(这是一个和types)? 这一直困扰着我。 另外,依赖函数types与产品types相似如何?
Data.Void的absurd函数具有以下签名,其中Void是由该包导出的逻辑上无人居住的types: — | Since 'Void' values logically don't exist, this witnesses the logical — reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a 我知道有足够的逻辑来得到文档的注释,这个注释对应于作为types的命题对应的有效公式⊥ → a 。 我感到困惑和好奇的是:这个函数有什么实用的编程问题是有用的? 我认为在某些情况下,作为彻底处理“不可能发生”事件的types安全的方法,这可能是有用的,但是我不太了解Curry-Howard的实际用法,告诉我们这个想法是否在正确的轨道。 编辑:最好在Haskell的例子,但如果有人想使用依赖types的语言,我不会抱怨…