总函数中的等式证明和模式匹配

时间:2018-03-05 15:27:40

标签: idris

我知道这是一个有点人为的例子,但我想知道如何完成以下功能:

total foo : (x : Int) -> {auto prf : x = 10} -> Int
foo 10 = 10

目前,类型检查员抱怨:

Main.foo is not total as there are missing cases

编辑:

向HTNWs添加impossible分支回答我这样做是为了检查:

total foo : (x : Int) -> {auto prf : x = 10} -> Int
foo 10 {prf = Refl} = 10
foo x {prf = Refl} impossible

1 个答案:

答案 0 :(得分:2)

你必须在平等上进行模式匹配

total foo : (x : Int) -> {auto prf : x = 10} -> Int
foo 10 {prf=Refl} = 10