Data.Void
中的 absurd
函数具有以下签名,其中 Void
是该包导出的逻辑上无人居住的类型:
-- | Since 'Void' values logically don't exist, this witnesses the logical
-- reasoning tool of \"ex falso quodlibet\".
absurd :: Void -> a
我确实懂得足够的逻辑,可以从文档中得出这样的结论: 通过柯里-霍华德同构对应,这与有效的公式 ⊥ → a
是一致的。
我感到困惑和好奇的是: 这个函数在哪些实际编程问题中有用?我在想,也许在某些情况下,它作为一种类型安全的方式来彻底处理“不可能发生”的情况是有用的,但是我对 Curry-Howard 的实际应用知之甚少,根本无法判断这个想法是否正确。
编辑: 例子最好是在哈斯克尔,但如果有人想使用依赖类型的语言,我不会抱怨... ..。