(define-module (extant input) #:export (register-handler!)) (define *handlers* '()) (define (register-handler! proc) (set! *handlers* (cons proc *handlers*))) (define (dispatch-input text) (let loop ((handlers *handlers*)) (if (null? handlers) `((text . "No handlers found!") (style . "error")) (let ((result ((car handlers) text))) (or result (loop (cdr handlers)))))))