octets型定義

common lispでは、バイト配列型を(vector (unsigned-byte 8))と表す。
この型は個人的にはかなり使用頻度が高いのだが、見ての通り長くて打ちづらい。

今まではその時々によって、上の型をそのまま使ったり、エイリアス型を定義して使ったりしていたのだが、ここで正式(?)に省略形の型を定義しておくことにする。

;; 名前はsbclのsb-ext:string-to-octets関数から借用
(deftype octets () '(vector (unsigned-byte 8)))


一応、使用例。

;; before
> (sb-ext:octets-to-string (coerce #(239 188 172) '(vector (unsigned-byte 8))))
--> "L"

;; after
> (sb-ext:octets-to-string (coerce #(239 188 172) 'octets))
--> "L"

追記(2009/12/20)

関連する型定義も追加

(deftype octet  () '(unsigned-byte 8))
(deftype octets () '(vector octet))
(deftype simple-octets () '(simple-array octet))