2010/10/19

Common Lisp は動的型付け言語

Common Lisp は動的型付け言語。次のようにどんどん型が変っていく。

(setf x (make-array 0 :element-type 'character :adjustable t :fill-pointer 0))
;; => ""

(type-of x)
;; => (AND (VECTOR CHARACTER 0) (NOT SIMPLE-ARRAY))

(vector-push-extend #\あ x)
;; => 0

(setf t1 (type-of x))
;; => (AND (VECTOR CHARACTER 1) (NOT SIMPLE-ARRAY)) ; ほら型がかわった

(typep x t1)
;; => T

(vector-push-extend #\い x)
;; => 1

(setf t2 (type-of x))
;; => (AND (VECTOR CHARACTER 3) (NOT SIMPLE-ARRAY)) ; また型がかわった

(typep x t2)
;; => T

(typep x t1) ; もうこの型ではない。
;; => NIL

ね。動的でしょ?

0 件のコメント: