(define $Tree (lambda [$a] (type {[,$val [] {[$tgt (match [tgt val] [(Tree a) (Tree a)] {[[ ] {[]}] [[ ] {[]}] [[_ _] {}]})]}] [ [(Tree a) (Tree a)] {[ {[n1 n2]}]}] [ [a] {[ {[x]}]}] [_ [Something] {[$tgt {tgt}]}] }))