首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图理解索引类型

试图理解索引类型
EN

Stack Overflow用户
提问于 2020-05-24 17:24:22
回答 1查看 46关注 0票数 0

我正在尝试理解FStar教程中的向量类型:

代码语言:javascript
复制
type vector (a: Type) : nat -> Type =
   | Nil :  vector a 0
   | Cons : hd: a -> n: nat -> tl: vector a n -> vector a (n + 1)

通过Cons nat 3 Nil构造向量(类似于构造普通列表)失败,而Cons nat 3被接受。有人能向我解释我为什么要读Cons,因为它需要一个尾部参数吗?此外,如何创建带有实际元素的向量--或者是“空向量”类型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-24 20:50:19

这里有些混乱,对不起:)

  1. a of vector (出于我也不清楚的原因)隐含在NilCons中。因此,在编写Cons nat时,nat参数实际上是hd参数,F*推断aType0 (nat的类型)。因此,您正在构造一个类型向量,这可能不是intended.
  2. The Cons nat 3 Nil失败的原因,因为3参数是错误的,并且与Nil列表的长度不相对应。nat.
  3. The工作并且是1大小的向量,包含单个类型的Cons nat 3工作,因为您还没有给它tl参数,所以这是一个部分应用的构造函数,Cons应用于它的3个参数中的2个。Cons nat 3的类型是vector Type0 3 -> vector Type0 4,因此一个函数需要大小为3的向量才能生成类型4的向量。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61989680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档