Shammer's Philosophy

My private adversaria

Lispのsubseq関数

SEQUENCEの一部(あるいはすべて)をコピーするのがsubseq関数。

(SUBSEQ SEQUENCE START &OPTIONAL END)

&OPTIONAL とは、省略可能な引数ということか。
この関数の実行例は以下のような感じ。

?(setf lst '(a b c d e f g))
(A B C D E F G)
?(subseq lst 3 4)
(D)
?lst
(A B C D E F G)
?(subseq lst 0)
(A B C D E F G)

最初の引数は、コピー(あるいは抽出)対象となるSEQUENCE。その次がコピー開始位置。最後はオプションで、指定するとSTARTからその要素までをコピーし、省略するとSEQUENCEの最後までコピーされる。