パターンマッチ使ってみた。

Schemeにもパターンマッチがあるらしい。

知らなかった・・・使ってみる。

(require (lib "match.ss"))

(match '(1 2 3)
       ((a b c) (list c b a))
       (_ 'else))
; (3 2 1)

ほぉぉぉ。

Haskell風にリストを扱う。

(define double
  (match-lambda
    (() '())
    ((x . xs) (cons (* x 2) (double xs)))))

(double '(1 2 3))
; (2 4 6)

うわぁぁ。Schemeじゃねぇー。