(define $Suit (type {[,$suit [] {[$tgt (if (eq? tgt suit) {[]} {})]}] [ [] {[ {[]}] [_ {}]}] [ [] {[ {[]}] [_ {}]}] [ [] {[ {[]}] [_ {}]}] [ [] {[ {[]}] [_ {}]}] [_ [Something] {[$tgt {tgt}]}] })) (define $Card (type {[,$val [] {[$tgt (match [val tgt] [Card Card] {[[ ] {[]}] [[_ _] {}]})]}] [ [Suit (Mod 13)] {[ {[s n]}]}] [_ [Something] {[$tgt {tgt}]}] })) (define $poker-hands (lambda [$Cs] (match Cs (Multiset Card) {[ !>>>>> ] [ ! ! !>>>>> ] [ ! !>>>>> ] [ ! ! ! ! !>>>>> ] [ !>>>>> ] [ >>>>> ] [ ! !>>>>> ] [ >>>>> ] [>>>>> ]})))