diff --git a/lib/srfi/38.scm b/lib/srfi/38.scm index e90f0416..a429c296 100644 --- a/lib/srfi/38.scm +++ b/lib/srfi/38.scm @@ -288,6 +288,21 @@ ((#\b) (read-char in) (read-number 2)) ((#\i) (read-char in) (exact->inexact (read-one))) ((#\e) (read-char in) (inexact->exact (read-one))) + ((#\u #\v) + (if (eqv? #\v (peek-char in)) + (read-char in)) + (read-char in) + (if (not (eqv? #\8 (peek-char in))) + (error "invalid syntax #u" (peek-char in))) + (read-char in) + (let ((ls (read-one))) + (if (not (list? ls)) + (error "invalid bytevector syntax" ls)) + (let* ((len (length ls)) + (bv (make-bytevector len))) + (do ((i 0 (+ i 1)) (ls ls (cdr ls))) + ((null? ls) bv) + (bytevector-u8-set! bv i (car ls)))))) ((#\\) (read-char in) (let* ((c1 (read-char in))