data Pair a b = { MkPair a b } defn fst p = { case p of { MkPair a b -> { a } } } defn snd p = { case p of { MkPair a b -> { b } } } defn pair = { MkPair 1 (MkPair 2 3) } defn main = { fst pair + snd (snd pair) }