generic max = {a : @t, b : @t :: numeric @t if a > b -> a else -> b ;; }