idris - 如何比较类型的相等性?

标签 idris

我试图比较 StringString , 期待 True .

Idris> String == String
Can't find implementation for Eq Type

然后我期待 False比较 String 时到 Bool .
Idris> String /= Bool
Can't find implementation for Eq Type

我是不是错过了 import ?

最佳答案

你不能,因为它会破坏 parametricity ,我们在 idris 有。我们不能对类型进行模式匹配。但这对于写 Eq 来说是必要的。实现,例如:

{- Doesn't work!
eqNat : Type -> Bool
eqNat Nat = True
eqNat _ = False -}

此外,如果可以对类型进行模式匹配,则在运行时将需要它们。现在类型在编译时会被删除。

关于idris - 如何比较类型的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553856/

相关文章:

haskell - 在枚举上构建 absurd 谓词的证明时,有什么技巧可以摆脱样板文件?

function - 了解偏函数的输出

coq - 类型参数和索引之间的区别?

dependent-type - Idris:有界 double 的算术

pattern-matching - `case` 细化参数

dependent-type - 如何在 Idris 中表达范围有效性?

idris - Idris 中有理数的实现

reflection - Idris 中的准引用概述

idris - Prelude 如何允许 Nat 使用数字文字?

idris - 告诉条件语句分支中的依赖函数条件为真