2
我试图让人们可以称之为伊德里斯的可判断的分析器。起初我只是在分析自然数,但遇到了意想不到的问题。产生它的代码的最小例子是这样的:伊德里斯统一惊人的失败
data Digit : Char -> Type where
Zero : Digit '0'
One : Digit '1'
digitToNat : Digit a -> Nat
digitToNat Zero = 0
digitToNat One = 1
natToChar : Nat -> Char
natToChar Z = '0'
natToChar (S Z) = '1'
natToDigit : (n : Nat) -> Digit (natToChar n)
natToDigit Z = Zero
natToDigit (S Z) = One
我希望它可以编译,而是我得到
When elaborating right hand side of natToDigit:
Can't unify
Digit '0'
with
Digit (natToChar 0)
Specifically:
Can't unify
'0'
with
natToChar 0
但natToChar 0
显然等于'0'
,所以我不明白是什么这里的问题是。
更新
我还问了一个问题更直接关系到什么,我试图做here。