Greetings! I wondering, if is it possible to implement something like this?
(define-syntax R (syntax-rules () ((_ r v l) #(red r v l)))) (define-syntax B (syntax-rules () ((_ r v l) #(black r v l)))) (define red-black-set-balance (match-lambda ((or (B (R (R a x b) y c) z d) (B (R a x (R b y c)) z d) (B a x (R (R b y c) z d)) (B a x (R b y (R c z d)))) (R (B a x b) y (B c z d))) (node node))) The idea is to have some automation allowing not to write patterns manually: #('black #('red #('red a x b) y c) z d) - Mikhail Bakhterev, respectfully.