Part7: ベクタ

ダイヤ「初っぱなの小咄もネタがなくなってきましたわね」
花丸「5話の果南さんかわいかったずら・・・とか」
果南「・・・マル、おねーさんさすがに怒るよ?」
花丸「ひっ・・・ご、ごめんなさい・・・」
ダイヤ「果南さん、それは花丸さんなりに気を遣ったんですわよ」


ダイヤ「では今回はベクタというものを見てみます。まあ、ぶっちゃけ配列ですわね」
果南「データに順序をつけて並べたもの、ってやつだね」
ダイヤ「ベクタは1次元の固定長配列、つまり後から長さを変更したりはできません」

ダイヤ「書き方は2つありますが、どちらも同じベクタの記法ですわ」
果南「これで3要素のベクタ、と・・・」
ダイヤ「ベクタにできることは単純で、要素を取り出すことと、要素を置き換えることくらいですわ」

花丸「シンボルみたいに'が付いてるずら」
ダイヤ「ベクタはシンボルと同じように『自己評価的ではない』という言い方をしますが、ともかくリテラルとしてベクタを書く場合は'が必要になりますわ」
果南「これquoteでもいいのかな」
ダイヤ「(quote #("dia" "kanan" "maru"))でも構いませんが、長いですしあまり使いませんわね」

ダイヤ「ただ、このクォートについては処理系によって動作に差があります。Schemeの本来の仕様では今説明したようにクォートが必要ですが、Gaucheではクォートなしでも動きますわ」
果南「処理系による差、って最初に言ってたのはこういうことなんだね」
花丸「とりあえずクォートしておく方がよさそうずら」


ダイヤ「要素数を指定して空のベクタを作ることもできます」

ダイヤ「これに対してvector-set!で値を入れていく使い方ですわね」


ダイヤ「ここまでの例では文字列のベクタを扱ってきましたが、データの種類に制約はありませんわ」

花丸「にこちゃんの汎用性」
ダイヤ「さすにこですわ」
果南「ダイヤはそういう知識どっから仕入れてくるのさ・・・」


ダイヤ「さて、次回からがこのScheme入門の要ですわ。リストについて、何回かに分けて見ていきます」
花丸「ベクタと違うずら?」
ダイヤ「一見似たように見えますが、リストはLisp語族の基礎にして根幹、宇宙にも等しい・・・」
果南「はいはい、話半分に聞いとけばいいからね」


LINEで送る
Pocket


返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です