data Pair a b = { Pair a b } defn packer = { let { data Packed a = { Packed a } defn pack a = { Packed a } defn unpack p = { case p of { Packed a -> { a } } } } in { Pair pack unpack } } defn main = { case packer of { Pair pack unpack -> { unpack (pack 3) } } }