(define (make rcs targets . maybe-arg) (let-optionals maybe-arg ((init-state (list))) (let* ((common-rule-candidates (cdr rcs)) (rule-candidates (car rcs)) (rules (rcs->rules rule-candidates common-rule-candidates)) (rule-set (rules->rule-set rules)) (target-rules (map (lambda (t) (lookup-rule t rules)) targets))) (map (lambda (t) (rule-make t init-state rule-set)) target-rules))))