#;32> (set-sharp-read-syntax! #\> (lambda (p) (letrec ((f (lambda (p acc) (let ((c (read-char p))) (cond ((and (eqv? c #\<) (eqv? (peek-char p) #\#)) (read-char p) (list->string (reverse acc))) ((eof-object? c) (error "messed up")) (else (f p (cons c acc)))))))) `(foreign-declare ,(f p '()))))) #;33> (with-input-from-string "(module lol *\n; comment\n#;(special read comment)\n#>\ndanger\n<#(fn 1 2)\n\n)\n" read) (module lol * (foreign-declare "\ndanger\n") (fn 1 2))