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

Single-assinment language and generation (Was: $B6=L#$r$R$/%W%m%0%i%`(B?)

1 view
Skip to first unread message

Yasushi Shinjo

unread,
Jan 9, 2002, 2:46:32 AM1/9/02
to
新城@筑波大学情報です。こんにちは。

単一代入の話は、Followup-To: fj.comp.lang.functional ですか
ね。教育とは外れているみたいだし。

In article <a1g15g$9...@utogw.gssm.otsuka.tsukuba.ac.jp>
ku...@gssm.otsuka.tsukuba.ac.jp writes:
> 関数型言語は副作用を排除するから、変数に値が入ったらそれはそれ
> 以上変化しないのが筋という感じかな。

ちょっと違うけれど、単一代入は、C言語のプリプロセッサの
#define みたいに一度 define したらもう変らない

あと、データフロー計算とも関係がありますね。Data Flow C とい
う言語があって、見掛けはC言語そっくりなんですが、単一代入っ
ぽい話になっていたと思いました。ループは、こんな感じで懸ける
のですが、

for( i=0 ; i<100; i=i+1 )
{
a[i] = b[i] + c[i] ;
}

i++ と書かないで i=i+1 と書くのが、データフローなんだそうで
す。(構文糖で書いてもいいんだろうけれど。)i=i+1 は、代入文
の左辺の i と右辺の i は別のインスタンスと思うということだっ
た思いました。上の例だと、i が 0 から 99 まで並列に実行する
ことも可能です。

> Human h1 = new Human();
> Human h2 = h1.addAge(1);
> しかしそうすると歳を取るたびに新しい人間をつくり出しているわけで、
> 普段我々が考えているオブジェクト指向のモデルと合わないじゃない?

オブジェクト指向の理論的な話をする人は、歳を取るたびに新しい
人間が作られていると思って解析したりしますよね。何か結果に重
大な違いは出てきたりしないんですかね。

新しいものが作られると、次のようなものが書けて便利です。

cat file1 | sort > file1

ICOT の PIMOS だと、これが動くんでしたっけ?

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

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Jan 9, 2002, 10:15:50 AM1/9/02
to
久野です。

y...@is.tsukuba.ac.jpさん:


> オブジェクト指向の理論的な話をする人は、歳を取るたびに新しい
> 人間が作られていると思って解析したりしますよね。何か結果に重
> 大な違いは出てきたりしないんですかね。

理論はいいんですが、実用のプログラムってオブジェクト作ったらあ
ちこちの変数から参照させておきますよね。「これが私の子供だから覚
えておいてね」って。で、子供が誕生日になって1つ歳取ったら私のと
こにある変数にだけ新しい子供が入って他の変数は古いまま、じゃ困る
でしょ? もっかい配って変数を更新しろと言わないように。

単一代入という話なんだから。 久野


0 new messages