2017-02-28 120 views
1

类型的错误(无界的构造函数,没有构造函数),我要让作用这样的功能:的函数参数,ocaml的

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

例如,

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

我有两个错误

错误1

let append_list (a, b) (A, B) =
(a::A, b::B);;
Error: Unbound constructor A

误差2

let append_list (a, b) ((A : 'a list), (B : 'a list)) =
(a::A, b::B);;
Error: The variant type list has no constructor A

如何让正确的功能?

回答

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'])