lang_2023/tests/typeclasses.lang
2023-04-29 12:33:05 +03:00

26 lines
601 B
Text

typeclass Copy =
& copy : Copy -> Copy
typeclass (Ord : #Eq) =
& is_less_then : Ord -> Bool
typeclass (D : #A #B #C) 'A 'B =
& do_something : Unit -> (& 'A & 'B)
typeclass E 'A =
& do_something : Unit -> 'A
decl ( == ) ('A : #Ord) : 'A -> 'A -> Bool
def ( == ) : a b = a.is_equal_to b
decl ( < ) ('A : #Ord) : 'A -> 'A -> Bool
def ( < ) : a b = a.is_less_then b
decl ( > ) ('A : #Ord) : 'A -> 'A -> Bool
def ( > ) : a b = !(a <= b)
decl ( <= ) ('A : #Ord) : 'A -> 'A -> Bool
def ( <= ) : a b = (a < b) || (a == b)
decl ( >= ) ('A : #Ord) : 'A -> 'A -> Bool
def ( >= ) : a b = !(a < b)