*構想ノート3:華和梨の仕様案あれこれ [#x0c199dc]

**set系コマンドで複数値を格納 [#f5949695]
一時エントリ等で、たまに複数の値を一気にエントリに設定したい場合がある。
この場合、従来はこう書く。
>pushstr @a ABC;
>pushstr @a DEF;
>pushstr @a XYZ;
>#@aエントリにABC、DEF、XYZの3個の単語が格納された

しかし、これは気持ちとしては一気に書きたい。例えば次のように。
>setstrvect @a ABC DEF XYZ;
>#@aエントリにABC、DEF、XYZの3個の単語が格納された

set系コマンドが初めからそうでもよかったが、歴史的事情からそうなってない。
今からset/setstrをこの動作にするのは、混乱をきたすので別命令で実装が妥当。

**エントリ呼び出し時に引数指定 [#s0ed1a96]
現在の実装では、ユーザ定義コマンドの実体は「引数を与えて呼べるエントリ」である。
これと同様に、通常のエントリを引数を与えて呼べてもいいのではないか。
里々のcallと同じこと。

>#例
>call hoge ABC DEF XYZ;
># hogeエントリを$@arg[1]="ABC",$@arg[2]="DEF",$@arg[3]="XYZ"の状態で呼ぶ

Phase 8の実装案の一つとして、関数自体をエントリ化((つまり、$(hoge)コマンドはhogeエントリの内容を@arg付きで呼ぶことを意味する。))の案もあった。
この「関数自体をエントリ化」は、言語仕様としてはシンプルかつ拡張性もよいが、後方互換の観点で見送られたように記憶している。
だが、この「エントリを引数付きで呼ぶ」が可能だと、C言語等で言う所の関数テーブルの実装が素直になるなど、一定のメリットが今でもあると考える。


さとー個人の意見として、「グローバルエントリ名空間を汚す」という理由で実装を見送っているlambdaコマンド(無名関数)を、「一時エントリへ無名関数を格納」という形で実質的に回避出来るのではないかと思っている。とはいえ、要検討。


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS