exception CombineError let rec split3 l = match l with [] -> ([],[],[]) | (a,b,c)::t -> begin let (al,bl,cl) = split3 t in (a::al,b::bl,c::cl) end let rec combine3 al bl cl = match (al,bl,cl) with ([],[],[]) -> [] | (ah::at,bh::bt,ch::ct) -> (ah,bh,ch)::(combine3 at bt ct) | _ -> raise CombineError