小编ano*_*der的帖子

在Ocaml上附加两个列表

所以这是附加两个列表的一种方法:

let rec append l1 l2 =
  match l1 with
  | h :: t -> h :: append t l2
  | [] -> l2
Run Code Online (Sandbox Code Playgroud)

但我正在尝试编写一个尾递归版本的追加.(在调用递归函数之前解决问题).

到目前为止这是我的代码,但是当我尝试在第一个if语句中添加append时,代码因为奇怪的原因而出错.

let list1 = [1;2;3;4]
let list2 = [5;6;7;8]



let rec append lista listb =
  match listb with
  | h :: taillist -> if taillist != []  then 
  begin 
    lista @ [h];
    (* I cant put an append recursive call here because it causes error*)
  end else
  append lista taillist;
 | [] -> lista;;


append …
Run Code Online (Sandbox Code Playgroud)

recursion ocaml list

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

list ×1

ocaml ×1

recursion ×1