make-sequence

Title
make-sequence
Type
Function
Arguments
make-sequence TYPE SIZE &key :initial-element
Package
lisp
Section
シーケンス
File
sequence.l
要素のタイプが TYPE でサイズが SIZE なシーケンスを作成して返します。
:initial-element が与えられた場合はそれぞれの項目はそれで初期化されます。
  
TYPE の値と返されるシーケンスは以下の通りです。
  'list          ──→ リスト
  'vector        ─┬→ ベクタ
  'simple-vector ─┘
  'string        ─┬→ 文字列
  'simple-string ─┘

TYPE にはリストを与えることもでき、その場合は最初の要素でシーケンスが決まります。
  '(list ...)         ──→ リスト
  '(array ...)        ─┬→ 配列
  '(simple-array ...) ─┘
最初の要素が list の場合、二番目以降の引数は無視されます。
最初の要素が array または simple-array の場合は三番目の要素まで意味を持ちます。
二番目の要素は値によって以下のように変化します。リストの場合はその最初の要素で判断されます。
  t                  ─┬→ 配列
  nil                ─┘
  character          ─┬→ 文字列
  base-character     ─┤
  standard-char      ─┤
  extended-character ─┘
三番目の要素は 1 または (*) または (SIZE に等しい数値) でなければなりませんが、
どれを選んでも動作に違いはないようです。
  
使用例:
  ;;; #\a が 8 文字の文字列を作ってみる
  (make-sequence 'string 8 :initial-element #\a)
  => "aaaaaaaa"
  (make-sequence 'list 4 :initial-element "abc")
  => (#1="abc" #1# #1# #1#)
  (make-sequence 'vector 4 :initial-element 'a)
  => #(a a a a)
  ;;; あえて TYPE に array を与えてみる
  (make-sequence '(array t (*)) 4 :initial-element 'a)
  => #(a a a a)
  (make-sequence '(array character 1) 8 :initial-element #\a)
  => "aaaaaaaa"
Seealso
make-vector
make-array
make-list