+            (convert:newtype (op (convert:newtype @1) (convert:newtype @2)))

The outer 'convert' is unnecessary, op already has the same type.

+           (nop:type (op (convert:ty1 @1) (convert:ty2 @2)))))

Please don't use 'nop' directly, use 'convert' instead. This line is very suspicious, both arguments of op should have the same type. Specifying the outertype should be unnecessary, it is always 'type'. And if necessary, I expect '(convert:ty1 @1)' is the same as '{ arg0; }'.

The explicit list of types is quite ugly, but since it already exists...

--
Marc Glisse

Reply via email to