Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Languages with Keyword parameters

2 views
Skip to first unread message

Yasushi Shinjo

unread,
Dec 22, 2006, 12:13:58 AM12/22/06
to
新城@筑波大学情報です。こんにちは。

今使われているプログラミング言語で引数は順番よく指定しないと
いけないものが多いです。
f( 1, 2 )
そうではなくて、キーワード・パラメタの方式で、次のように
変数名を指定する方法があります。
f( x=1, y=2 )
こうすると順序が変っても問題ありません。
f( y=2, x=1 )
最近は、キーワード・パラメタはあまり流行っていませんが、代表
的なキーワード・パラメタの言語というと、何を上げればいいでしょ
うか。

HTML に埋め込む applet なんかは、この流れと言ってもいいです
かね。

IBM JCL (Job Control Language) とか上げるのは、ちょっとやめ
たいけれど、JCL は JCL で何とかしないといけない言語ではあり
ます。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\

Shinji KONO

unread,
Dec 22, 2006, 7:16:47 AM12/22/06
to
河野真治 @ 琉球大学情報工学です。

In article <YAS.06De...@kirk.is.tsukuba.ac.jp>, y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes


> こうすると順序が変っても問題ありません。
> f( y=2, x=1 )
> 最近は、キーワード・パラメタはあまり流行っていませんが、代表
> 的なキーワード・パラメタの言語というと、何を上げればいいでしょ
> うか。

Common LISP が最初かな。

Ada も出来たんじゃなかろうか? 何でも出来る言語だからなぁ。

Perl だと、
sub hoge {
my %arg = @_;
if (defined($arg{-width}) { ....

みたいにして、

&hoge(-width=>3, -height=>4);

とか呼び出す手法があります。Perl/Tk は多用してます。

Smalltalk/Squeak は順序依存なんだけど、
hoge width:3 height:4.
hoge height:4.
とかありです。

> HTML に埋め込む applet なんかは、この流れと言ってもいいです
> かね。

そうかなぁ。



> IBM JCL (Job Control Language) とか上げるのは、ちょっとやめ
> たいけれど、JCL は JCL で何とかしないといけない言語ではあり
> ます。

dd かぁ...

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

Yasushi Shinjo

unread,
Dec 25, 2006, 5:06:54 AM12/25/06
to
新城@筑波大学情報です。こんにちは。

In article <3993410...@rananim.ie.u-ryukyu.ac.jp>


ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> > f( y=2, x=1 )
> > 最近は、キーワード・パラメタはあまり流行っていませんが、代表
> > 的なキーワード・パラメタの言語というと、何を上げればいいでしょ
> > うか。
> Common LISP が最初かな。

Common Lisp って、大分新しいです。それが出きる前から普通にあっ
たと思います。

> Ada も出来たんじゃなかろうか? 何でも出来る言語だからなぁ。

Adaの本があるけれど、、、たしかに、両方できると書いてあります。
SQRT(A,0.001)
SQRT(EPS=>0.001,X=>A)

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

> Perl だと、
> sub hoge {
> my %arg = @_;
> if (defined($arg{-width}) { ....
> みたいにして、
> &hoge(-width=>3, -height=>4);
> とか呼び出す手法があります。Perl/Tk は多用してます。

ハッシュ表渡しね。引数が勝手にハッシュ表になるのね。

> Smalltalk/Squeak は順序依存なんだけど、
> hoge width:3 height:4.
> hoge height:4.
> とかありです。

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

> > HTML に埋め込む applet なんかは、この流れと言ってもいいです
> > かね。
> そうかなぁ。

何が気に入らない? 明示的に get するから?

> > IBM JCL (Job Control Language) とか上げるのは、ちょっとやめ
> > たいけれど、JCL は JCL で何とかしないといけない言語ではあり
> > ます。
> dd かぁ...

はい。data define でしたっけ。JCL は書けなかった。難しかった。

Shinji KONO

unread,
Dec 25, 2006, 7:31:37 AM12/25/06
to
河野真治 @ 琉球大学情報工学です。

In article <YAS.06De...@kirk.is.tsukuba.ac.jp>, y...@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 は、そんな気がしました。順番引っくり返せないけれど、
> 省略は可能ってことですか。

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

0 new messages