以下示例使用Bi
package中的Data.Bin
:
import Data.Bin
foo : (x, y : Bin) -> Dec (binCompare x y = LT)
foo x y = case binCompare x y of
LT => Yes (C1 ?hole1)
EQ => ...
GT => ...
:t ?hole1
binCompare x y = LT
如何在处理binCompare x y = LT
案件时获得LT
的证明?
答案 0 :(得分:5)
您需要使用view代替case
:
由于类型可以依赖于值,因此某些参数的形式可以由其他参数的值确定。
所以下面的版本按预期工作:
foo : (x, y : Bin) -> Dec (binCompare x y = LT)
foo x y with (binCompare x y)
foo x y | LT = Yes Refl
foo x y | EQ = ?q_2
foo x y | GT = ?q_3