It is very convenient to use
class (+) infixl 6 a :: !*a !a -> .a
for example,
instance + BigInt where (+) a b = add_inplace_UB_B a b
thus,
fn1 :: *a .a -> *a | + a
fn2 :: v:a u:a -> v:a | SomeClass a , [v <= u]
are quite possible in real programs.