最適なパターンマッチ関数を動的に作りたいのですが、
良い方法は無いでしょうか。

例えば
(match? '(lambda ()) s)
↓これを
(and (pair? s)
(eq? (car s) 'lambda)
(pair? (cdr s))
(null? (cadr s))
(null? (cddr s)))
に直したい。