我想将list of integer
转换为list of nat
。这是我在Coq
中返回的函数。
Fixpoint list_int_to_nat (l : list integer) : list nat :=
match l with
| nil => nil
| x :: l' => let i := Z.to_nat x in
list_int_to_nat l'
end.
您是否可以帮助我将列表integer
的每个元素翻译为nat
列表,因为在我的函数中我没有使用第一个元素i
?非常感谢你的帮助。
答案 0 :(得分:3)
您还可以使用map
:
Definition list_int_to_nat l := map Z.to_nat l.
答案 1 :(得分:2)
你编写了一个递归函数,它总是在尾部调用自己,而你对头部什么都不做,所以最终你的函数总是返回nil
。
您想要的是使用cons
中的list
构造函数在返回列表的开头添加i
。
Fixpoint list_int_to_nat (l : list integer) : list nat :=
match l with
| nil => nil
| x :: l' => let i := Z.to_nat x in
i :: list_int_to_nat l'
end.
(这里我使用了:: notation,我觉得更方便)。
这应该可以解决问题。