% Macro NTH-VALUE
Macro NTH-VALUE
nth-value
n form => object
n - 非負の整数。評価されます。
form - フォーム。下記の説明に従って評価されます。
object - オブジェクト
nが評価され、そのつぎにformが評価され、
formによって返却されたn番目の値のみを返却します。
もしnがformの返却数以上の場合はnil
が返却されます。
(nth-value 0 (values 'a 'b)) => A
(nth-value 1 (values 'a 'b)) => B
(nth-value 2 (values 'a 'b)) => NIL
(let* ((x 83927472397238947423879243432432432)
(y 32423489732)
(a (nth-value 1 (floor x y)))
(b (mod x y)))
(values a b (= a b)))
=> 3332987528, 3332987528, true
なし。
なし。
なし。
操作において、下記の関数は等しいと言えますが、
nth-value
は実装によってはより効率と言えます。
なぜなら、例えばコンス化することを回避できるからです。
(nth-value n form) == (nth n (multiple-value-list form))