type 'a list = Nil | Cons of 'a * 'a list

class Hashable 'a { hash : 'a -> int }

class Comparable 'a { cmp : 'a -> 'a -> int }

instance Hashable int { hash = fun x -> x }

instance ['a] Comparable 'a => Comparable 'a list { cmp = fun x -> fun y -> 0 }

let main = 0
