typeclass \default = & default : -> \default typeclass \ord[#eq] = & var is-less-then : \ord -> \bool typeclass \d[#a #b #c] 'a 'b = & var do-something : -> (& 'a & 'b) typeclass \e 'a = & var do-something : -> 'a decl ( == ) 'a[#ord] : 'a -> 'a -> \bool def ( == ) : a b = a..is-equal-to: b decl ( != ) 'a[#ord] : 'a -> 'a -> \bool def ( != ) : a b = not: (a == b) decl ( < ) 'a[#ord] : 'a -> 'a -> \bool def ( < ) : a b = a..is-less-then: b decl ( > ) 'a[#ord] : 'a -> 'a -> \bool def ( > ) : a b = not: (a <= b) decl ( <= ) 'a[#ord] : 'a -> 'a -> \bool def ( <= ) : a b = a < b ||. a == b decl ( >= ) 'a[#ord] : 'a -> 'a -> \bool def ( >= ) : a b = not: (a < b)