I've been playing around with some R7RS things, and noticed that MIT/GNU
Scheme has most of R7RS, but a few things are still missing (see also

One of the simpler things might be bytevectors, if they are just aliased
to vector-8bs/strings, as the code in the attachment does. This does
*not* add un/parser support for #u8...

Would this be acceptable for inclusion into master?

Also missing and maybe not too hard:
- exact-integer-sqrt
- (log x y)
- nan?
- finite?
- infinite?
- #\alarm
- call/cc as an alias
- symbol=?

Missing but maybe harder?:
- string-foldcase
- all string/char comparison with more than two parameters
- vector-map and vector-for-each on different length vectors
- digit-value

Thanks for any help, greetings!

;; simple aliasing "implementation" of r7rs bytevectors
;; just map everything to vector-8b / string

(define bytevector? string?)

(define (make-bytevector k #!optional byte)
  (if (default-object? byte)
      (make-vector-8b k)
      (make-vector-8b k byte)))

(define (bytevector . rest)
  (list->string (map integer->char rest)))

(define bytevector-length vector-8b-length)

(define bytevector-u8-ref vector-8b-ref)

(define bytevector-u8-set! vector-8b-set!)

(define (bytevector-copy bytevector #!optional start end)
  (string-copy bytevector start end))

(define (bytevector-copy! to at from #!optional start end)
  (string-copy! to at from start end))

(define bytevector-append string-append)

;; if it is a utf8 "bytevector", it is already a string
(define utf8->string identity-procedure)

;; if it is a string that is supposed to contain utf8, it is already a 
(define string->utf8 identity-procedure)
MIT-Scheme-devel mailing list

Reply via email to