CLでSRFI-66 — #:g1

Posted 2012-01-06 18:22:00 GMT

CLでSRFI、今回は、SRFI-66の「Octet Vectors」です。
SRFI-4で各種Uniform Vectorが定義されていますが、SRFI-66では、Octet Vectors[要素のタイプが0〜255の整数]ということでu8vectorをピックアップし、さらにユーティリティを少し足している感じです。

動作

(u8vector 8 8 8)
;=>  #(8 8 8)

(u8vector? (u8vector 8 8 8))
;=>  T

(typep (u8vector 8 8 8) '(vector (unsigned-byte 8)))
;=>  T

(let* ((u8v (make-u8vector 8 1))
         (u8v-copy (make-u8vector (u8vector-length u8v) 8)) )
    (u8vector-copy! u8v
                    0
                    u8v-copy
                    0
                    8 )
    (u8vector=? u8v
                u8v-copy ))
;=>  T

(u8vector-compare (make-u8vector 8 0)
                  (make-u8vector 8 1) )
;=>  -1

(u8vector-compare (make-u8vector 8 1)
                  (make-u8vector 8 0) )
;=>  1

(u8vector-compare (make-u8vector 8 0)
                  (make-u8vector 8 0) )
;=>  0

移植について

SRFI-4と名前被っているところがありますが、機能は同じなので、一緒にuse-packageしたりすることを考えて、SRFI-4のものをインポートすることにしました。

comments powered by Disqus