Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Coq中编写没有参数的定义?_Coq - Fatal编程技术网

如何在Coq中编写没有参数的定义?

如何在Coq中编写没有参数的定义?,coq,Coq,我在中定义了以下归纳类型 natlist基本上是一个自然数列表(类似于Python中的列表)。我试图用下面的定义找到两个natlist的并集 列表的定义联合:natlist->natlist->natlist i、 e Eval simple in(列表[1,2,3][1,4,1]的并集) 应返回[1,2,3,1,4,1] 我有以下疑问 由于这个定义没有参数,我实际上如何获取输入并处理它们 _列表的union_返回的确切定义是什么?这只是一份名单吗 非常感谢任何帮助或提示。我自己找到了答案:

我在中定义了以下归纳类型

natlist基本上是一个自然数列表(类似于Python中的列表)。我试图用下面的定义找到两个natlist的并集

列表的定义联合:natlist->natlist->natlist

i、 e
Eval simple in(列表[1,2,3][1,4,1]的并集)
应返回[1,2,3,1,4,1]

我有以下疑问

  • 由于这个定义没有参数,我实际上如何获取输入并处理它们
  • _列表的union_返回的确切定义是什么?这只是一份名单吗

非常感谢任何帮助或提示。

我自己找到了答案:)我所做的是,我编写了一个单独的定点函数
append
,然后将其分配给
union\u列表的定义

Fixpoint append(l1 l2 : natlist) : natlist :=
  match l1 with
  | nil => l2
  | (h :: t) => h :: app t l2
  end.`
然后

Definition union_of_lists : natlist -> natlist -> natlist := append.

Eval simpl in (append [1,2,3] [1,2,3]) (* returns [1,2,3,1,2,3] *)
列表的定义
union\u
返回一个函数,该函数以
natlist
为参数,并返回另一个
natlist->natlist
类型的函数(即函数取
natlist
参数并返回
natlist


列表的联合定义类似于可以返回函数或值的函数。

您也可以直接执行:列表的定点联合(l1 l2:natlist)…,类型相同(只需输入“Check append.”)。或者使用标准库中的附加列表(请参见)是。你是对的。_列表的append和union_的类型相同。我的意图是使用定义而不是固定点。这就是为什么我必须以一种迂回的方式来做那件事。感谢您提出使用标准库的建议。我会查一查。
Definition union_of_lists : natlist -> natlist -> natlist := append.

Eval simpl in (append [1,2,3] [1,2,3]) (* returns [1,2,3,1,2,3] *)