module StringConcat = struct type t type a=t list and b=t and c=t list let op = fun x y -> y @ [x] ;; let init = [] ;; end