(import breadline) (import (chicken foreign) (chicken process signal)) (foreign-declare "#include ") (define readline-cleanup-after-signal (foreign-lambda void "rl_cleanup_after_signal")) (set-signal-handler! signal/int (lambda (_) (readline-cleanup-after-signal) (exit))) (let loop () (let ((input (readline "> "))) (if input (begin ;; processing code goes here (print input) (loop)) (newline))))