2012年6月11日月曜日

coerce関数で型変換

Common Lisp で array を list に変換したいなー、と思って調べたら coerce という関数がみつかった。

CL-USER> (mapcar #'(lambda (x) (1+ x)) (make-array 4))
; Evaluation aborted on #<TYPE-ERROR expected-type: LIST datum: #<(SIMPLE-VECTOR 4) {1271CFBF}>>.
CL-USER> (mapcar #'(lambda (x) (1+ x)) (coerce (make-array 4) 'list))
(1 1 1 1)

Emacs Lisp にもありました。

(car [1 2 3])
Debugger entered--Lisp error: (wrong-type-argument listp [1 2 3])
  car([1 2 3])

(car (coerce [1 2 3] 'list))
1

"coerce"というのは他動詞で「〈人を〉強制[強要]して〔…〕させる 〔into〕」という意味が一番目。辞書を引くとけっこうseriousな例文が出てくる。"They coerced her into signing the contract." 「彼らは無理に彼女にその契約書に署名させた.」



0 件のコメント:

コメントを投稿