所以这是附加两个列表的一种方法:
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)