Ocaml 如何将两个列表作为两个元素合并到一个列表中?

Ocaml 如何将两个列表作为两个元素合并到一个列表中?,ocaml,Ocaml,我想把两个列表放到一个列表中,但不使用append。它将得到两个混合列表。我希望这两个列表作为新列表中的两个元素。新列表只有两个元素——第一个列表和第二个列表。这里有一种方法: let list2 a b = [ a; b ] 这适用于相同类型的任意两个值a,b。它们可以是列表或其他任何内容: $ ocaml OCaml version 4.01.0 # let list2 a b = [a; b];; val list2 : 'a -> 'a -> 'a lis

我想把两个列表放到一个列表中,但不使用append。它将得到两个混合列表。我希望这两个列表作为新列表中的两个元素。新列表只有两个元素——第一个列表和第二个列表。

这里有一种方法:

let list2 a b = [ a; b ]
这适用于相同类型的任意两个值
a
b
。它们可以是列表或其他任何内容:

$ ocaml
        OCaml version 4.01.0

# let list2 a b = [a; b];;
val list2 : 'a -> 'a -> 'a list = <fun>
# list2 [1;2] [3;4];;
- : int list list = [[1; 2]; [3; 4]]
# list2 "yes" "no";;
- : string list = ["yes"; "no"]
#
$ocaml
OCaml版本4.01.0
#让列表2 a b=[a;b];;
val list2:'a->'a->'a列表=
#清单2[1;2][3;4];;
-:int list=[[1;2];[3;4]]
#清单2“是”“否”;;
-:字符串列表=[“是”;“否”]
#

(如果两个列表的类型不同,则无法将它们放入列表中。OCaml列表是同质的——所有元素都具有相同的类型。)

您可以使用函数执行此操作:

直接使用append()。

def foo(列表1、列表2):
新列表=[]
对于范围(0,len(列表1))中的i:
新增列表。追加(列表1[i])
对于范围(0,len(列表2))中的j:
新的_list.append(list2[j])

返回新列表

(OP要求提供OCaml解决方案。)