河野真治 @ 琉球大学情報工学です。

In article <YAS.06Dec25190654@kirk.is.tsukuba.ac.jp>, yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes
> Common Lisp って、大分新しいです。それが出きる前から普通にあっ
> たと思います。

普通かどうかは... PL/1 かなぁ? コンパイラで実装しやすいので、
PL/1 かも知れないな。Mesa とか? (チェックしてません)

C でやろうと思ったら、構造体渡しにして、

    int printf(const char *,...);

    struct hoge { int hage, fuga; };

    void f(struct hoge h) {
        printf("%d %d\n",h.hage,h.fuga);
    }
   
    int main() {
         f((struct hoge){.fuga = 3});
    }

とかいう技があるかな。(明示したものが以外は0で初期化されるはずです...)

構造体渡しは、レジスタに載せるアーキテクチャも多い。IA32は
だめですが。

> Ada も、それなりに新しい気もするけど。Common Lisp よりは古い。
> そいいえば、今、Ada っ
> てどうなっているんだろう。

軍関係で立派に残っているようです。

> >       my %arg = @_;
> >     &hoge(-width=>3, -height=>4);
> > とか呼び出す手法があります。Perl/Tk は多用してます。
> ハッシュ表渡しね。引数が勝手にハッシュ表になるのね。

なるって言うか、明示的に変換するわけですね。a => b は、((quote a) b)
みたいなものです。

> Smalltalk は、そんな気がしました。順番引っくり返せないけれど、
> 省略は可能ってことですか。

いいえ、定義したものだけです。省略できません。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科