Re: Languages with Keyword parameters
河野真治 @ 琉球大学情報工学です。
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
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735