toda@lbm.go.jp writes:

> ということで、とりあえずWebで少しは判らないかと
> いろいろ探してたら、
>    http://www.page.sannet.ne.jp/mnagai/msj/pgm_lang.htm
> なんていうページが出てきました。
> まあ、わりとよくできてるかな。

politically incorrectではありますが.
# 実際,読んであまり気分が良くないです.

> Pascalのところに、「Algol 60はその妹」とあるんですが、
> 「Algol 68は」の間違いじゃなかろうか。

姉も妹もsisterだけど,年齢から言えばAlgol 60が姉でしょうね.

OOTANI TAKASHI <tksotn@anet.ne.jp> writes:

> algol68 struct union esac でググって、
> http://www.cs.virginia.edu/~evans/cs655-S00/Spring-1999/Slides/05a68_pasc.pdf
> や http://page.inf.fu-berlin.de/~wolff/Algol68-OCCL.html
> というのを見つけました。

http://dmoz.org/Computers/Programming/Languages/Algol_68/
というページがありました. Revised Reportもここからたどって読めます.
(恐ろしく読みにくいが…)

> union もありますが、これは C とずいぶん違う。C ではどの型のデータが入っている
> かはプログラマが管理しますが、algol68 では処理系が管理します。

Pascalの場合は「可変レコード」ですね(たぶん,unionという予約語を1つ
ケチった?). Algol68との大きな違いは,

・どの型のデータが入っているかを表す「タグ」を陽に書く.
type
  nodetype = (interim, leaf);
  node = record
    case tag: nodetype of
    interim: (left, right: ^node);
    leaf: (value: integer);
  end

・ところが,タグを省略することも出来るのだそうです(型システムの抜け穴).
type
  node = record
    case boolean of
    false: (left, right: ^node);
    true: (value: integer);
  end

こっち(タグなしの可変レコード)は,Cのunionと機能的に同等です.

> 処理系をさわったことが無いだけに憧れの言語ですね。

上のページには,処理系もいくつか載っています.

                                前田敦司