Types 在沈从文中可以做依赖类型吗?
我们看到了依赖类型的好处: 依赖类型是依赖于其他类型的元素的类型。一个例子是长度为n且分量为A的向量的类型An。另一个例子是m n-矩阵的类型Amn。我们说类型An依赖于数字n,或者说An是由数字n索引的一系列类型 我们还看到了以下好处: 如果列表中只有一个元素,则会出现类型错误,因此上面代码段中的第二行不应编译 该系统具有先进的类型系统 这里的评论员将沈从文描述为 在这里: 但是,您可以在Shen中以不会产生问题的方式使用依赖类型Types 在沈从文中可以做依赖类型吗?,types,lisp,dependent-type,shen,Types,Lisp,Dependent Type,Shen,我们看到了依赖类型的好处: 依赖类型是依赖于其他类型的元素的类型。一个例子是长度为n且分量为A的向量的类型An。另一个例子是m n-矩阵的类型Amn。我们说类型An依赖于数字n,或者说An是由数字n索引的一系列类型 我们还看到了以下好处: 如果列表中只有一个元素,则会出现类型错误,因此上面代码段中的第二行不应编译 该系统具有先进的类型系统 这里的评论员将沈从文描述为 在这里: 但是,您可以在Shen中以不会产生问题的方式使用依赖类型 我的问题是:在《沈》中是否可以做依赖类型?事实上,看看《沈》作
我的问题是:在《沈》中是否可以做依赖类型?事实上,看看《沈》作者本身的解释: “Qi确实包括处理依赖类型的设施……类型符号实际上是图灵等价物……Shen有一个重要的创新,在Qi II中没有发现,那就是能够使用类型安全策略扩展驻留类型检查器…” 来自Shen OS内核手册的Shen中的依赖类型
(datatype my-prover-types
P : Type;
_______________________
(myprog Type X) : Type;)
type#my-prover-types
(define myprog
Type P -> P)
(myprover symbol p)
p : symbol
(myprog number p)
type error
下面是在类型检查器中定义任意转换的示例。 meta.uncon将[cons a[cons b[]]映射到[a b]
(0-) (datatype meta.uncons
(meta.uncons X X*);
(meta.uncons Y Y*);
_____________________________________
(meta.uncons [X|Y] (X*|Y*));
_____________________________________
(meta.uncons X X); )
type#meta.uncons
(1-) (prolog? (shen.t* [meta.uncons [cons a [cons b [cons c []]]] Z] [])
(return Z))
[a b c]
这句话似乎暗示了这一点?我猜你想要的是更具体的东西,但我不确定是什么。