let sxopt = saopt in
let ii_b_sx = ii_b_sa in
+ (* todo? iso on name or argument ? *)
(ba =:= bb && saopt =*= sbopt) >&&>
fullType ta tb >>= (fun tx ->
let paramx = (((bx, sxopt, tx), ii_b_sx)) in
match xfielda, xfieldb with
| EmptyField, EmptyField -> return ((EmptyField, iix)::xs)
- | FieldDeclList fa, FieldDeclList fb ->
+ | DeclarationField (FieldDeclList (fa, iipta)),
+ DeclarationField (FieldDeclList (fb, iiptb)) ->
+ let iipt = iipta in (* TODO ?*)
(List.length fa =|= List.length fb) >&&>
Common.zip fa fb +> List.fold_left
)
) (return [])
>>= (fun fx ->
- return ((FieldDeclList (List.rev fx), iix)::xs)
+ return (((DeclarationField
+ (FieldDeclList (List.rev fx,iipt))), iix)::xs)
)
| _ -> fail
)