Function COERCE

UP


Function COERCE

Function COERCE

構文

coerce object result-type => result

引数と戻り値

object - オブジェクト
result-type - 型指定子
result - result-typeの型のオブジェクト。例外は状況は12.1.5.3. rational型の複素数の標準的な表現のルールをご確認ください。

定義

objectを型result-typeに強制的に変換します。

もしobjectがすでに型result-typeであったときは、 他の型のオブジェクトをresult-typeに強制することが 一般的に可能であったかどうかに関わらず、 object自身が返却されます。

それ以外のときは、objectは下記のルールに従って result-typeの型に強制されます。

例文

(coerce '(a b c) 'vector) =>  #(A B C)
(coerce 'a 'character) =>  #\A
(coerce 4.56 'complex) =>  #C(4.56 0.0)
(coerce 4.5s0 'complex) =>  #C(4.5s0 0.0s0)
(coerce 7/2 'complex) =>  7/2
(coerce 0 'short-float) =>  0.0s0
(coerce 3.5L0 'float) =>  3.5L0
(coerce 7/2 'float) =>  3.5
(coerce (cons 1 2) t) =>  (1 . 2)

下記の全てのフォームは、エラーが発生します。

(coerce '(a b c) '(vector * 4))
(coerce #(a b c) '(vector * 4))
(coerce '(a b c) '(vector * 2))
(coerce #(a b c) '(vector * 2))
(coerce "foo" '(string 2))
(coerce #(#\a #\b #\c) '(string 2))
(coerce '(0 1) '(simple-bit-vector 3))

影響

なし。

例外

もし強制が不可能な時は、 型type-errorのエラーが発生します。

(coerce x 'nil)は常に型type-errorのエラーです。

result-typefunctionだが、 objectfboundではないシンボルであったり、 またはシンボル名がマクロか特殊オペレーターのときは、 型type-errorのエラーが発生します。

result-typeで指定された要素数とobjectが違う長さでのときは、 型type-errorのエラーが発生します。

参考

rational, floor, char-code, char-int

備考

浮動小数から有理数への強制と、 分数から浮動小数への強制は、 丸め問題のため提供されません。

(coerce x 't) ==  (identity x) ==  x

TOP, Github