Egi言語
Egi言語で書いたポーカーの役のパターンマッチ。
(define poker_hands (lambda (Ks) (match Ks (of Multiset (** Mark Mod13)) ((((S 10) (S 11) (S 12) (S 13) (S 1)) ()) "Royal Straight Flush") ((((S n) (S n+1) (S n+2) (S n+3) (S n+4)) ((= n+1 (n) (+ n 1)) (= n+2 (n) (+ n 2)) (= n+3 (n) (+ n 3)) (= n+4 (n) (+ n 4)))) "Straight Flush") ((((_ n) (_ n) (_ n) (_ n) _) ()) "Four of Kind") ((((_ m) (_ m) (_ m) (_ n) (_ n)) ()) "Full House") ((((S _) (S _) (S _) (S _) (S _)) ()) "Flush") ((((_ n) (_ n+1) (_ n+2) (_ n+3) (_ n+4)) ((= n+1 (n) (+ n 1)) (= n+2 (n) (+ n 2)) (= n+3 (n) (+ n 3)) (= n+4 (n) (+ n 4)))) "Straight") ((((_ n) (_ n) (_ n) _ _) ()) "Three of Kind") ((((_ m) (_ m) (_ n) (_ n) _) ()) "Two Pair") ((((_ n) (_ n) _ _ _) ()) "One Pair") (((_ _ _ _ _) ()) "Nothing"))))