将整数列表转换为自然数列表

时间:2013-06-06 05:34:36

标签: coq

我想将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?非常感谢你的帮助。

2 个答案:

答案 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,我觉得更方便)。

这应该可以解决问题。