Functional programming DPair在鳍上变位
我正在学习Idris教程,希望进行实验 与相关的对和鳍 以下代码未键入签入IdrisFunctional programming DPair在鳍上变位,functional-programming,idris,Functional Programming,Idris,我正在学习Idris教程,希望进行实验 与相关的对和鳍 以下代码未键入签入Idris data Fin : Nat -> Type where FZ : Fin (S k) FS : Fin k -> Fin (S k) P : (Fin 1) -> Type P FZ = Char vec : DPair (Fin 1) P vec = MkDPair FZ 'c' 错误如下所示 prims.idr:9:15: When checking ri
data Fin : Nat -> Type where
FZ : Fin (S k)
FS : Fin k -> Fin (S k)
P : (Fin 1) -> Type
P FZ = Char
vec : DPair (Fin 1) P
vec = MkDPair FZ 'c'
错误如下所示
prims.idr:9:15:
When checking right hand side of vec with expected type
DPair (Fin 1) P
When checking argument pf to constructor Builtins.MkDPair:
Type mismatch between
Char (Type of 'c')
and
P FZ (Expected type)
我已经检查过p FZ是Char,所以我对类型不匹配的投诉感到困惑。使用Nat而不是Fin 1编译相应的代码
完美地我做错了什么?
p FZ
没有被标准化为Char
,因为编译器没有看到p
是总计(使用%default total
获得警告)。这项工作:
data Fin : Nat -> Type where
FZ : Fin (S k)
FS : Fin k -> Fin (S k)
P : (Fin 1) -> Type
P FZ = Char
P (FS FZ) impossible
P (FS (FS _)) impossible
vec : DPair (Fin 1) P
vec = MkDPair FZ 'c'