ocaml

时间:2017-02-28 03:00:50

标签: types constructor arguments ocaml

我想创建一个像这样的函数:

('a, 'a) >>>> ('a list, 'a list) >>>> ('a list, 'a list)

例如,

append_list (1, 2) ([10, 3], []) >>>> ([1, 10, 3], [2])

我有两个错误

ERROR1

  

让append_list(a,b)(A,B)=
              (a :: A,b :: B);;
      错误:未绑定的构造函数A

误差2

  

让append_list(a,b)((A:'列表),(B:'列表))=
              (a :: A,b :: B);;
      错误:变体类型列表没有构造函数A

如何正确使用此功能?

2 个答案:

答案 0 :(得分:0)

我得到了问题的答案,这是一个废话。

A, B

不能用作变量名称。

答案 1 :(得分:0)

let append_list  (a,b)  (l1,l2)= (a::l1,b::l2) ;;
  Or
let append_list  ((a:'a),(b:'b))  ((l1:'a list),(l2:'b list))= (a::l1,b::l2) ;;

测试:

# append_list (1,2) ([10;3],[]);;
- : int list * int list = ([1; 10; 3], [2])

# append_list (1,'2') ([10;3],['4']);;
- : int list * char list = ([1; 10; 3], ['2'; '4'])