Path: ccsf.homeunix.org!ccsf.homeunix.org!news1.wakwak.com!nf1.xephion.ne.jp!onion.ish.org!news.daionet.gr.jp!news.yamada.gr.jp!newsfeed.media.kyoto-u.ac.jp!oix.u-ryukyu.ac.jp!u-ryukyu.ac.jp!ie.u-ryukyu.ac.jp!gama.is.tsukuba.ac.jp!nadesico.cc.tsukuba.ac.jp!hagi.cc.tsukuba.ac.jp!not-for-mail From: MAEDA Atusi Newsgroups: fj.comp.lang.c,fj.comp.oldies Subject: union (Re: PL/1, Origin of struct) Date: 03 Sep 2003 11:41:35 +0900 Organization: Science Information Processing Center, University of Tsukuba Lines: 57 Sender: maeda@maedapc.cc.tsukuba.ac.jp Message-ID: References: <871xve8046.wl@anago2.mas.chi.its.hiroshima-cu.ac.jp> NNTP-Posting-Host: maedapc.cc.tsukuba.ac.jp Mime-Version: 1.0 (generated by SEMI 1.14.3 - "Ushinoya") Content-Type: text/plain; charset=ISO-2022-JP X-Trace: hagi.cc.tsukuba.ac.jp 1062556897 8802 130.158.72.55 (3 Sep 2003 02:41:37 GMT) X-Complaints-To: news@hagi.cc.tsukuba.ac.jp NNTP-Posting-Date: Wed, 3 Sep 2003 02:41:37 +0000 (UTC) User-Agent: Nana-gnus/6.13.12 SEMI/1.14.3 (Ushinoya) FLIM/1.14.4 (=?ISO-8859-4?Q?Kashiharajing=FE-mae?=) APEL/10.3 Emacs/20.7 (i386-vine-linux-gnu) MULE/4.1 (AOI) Cache-Post-Path: maedapc.cc.tsukuba.ac.jp!maeda@localhost X-Cache: nntpcache 2.4.0b5 (see http://www.nntpcache.org/) Xref: ccsf.homeunix.org fj.comp.lang.c:604 fj.comp.oldies:185 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 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と機能的に同等です. > 処理系をさわったことが無いだけに憧れの言語ですね。 上のページには,処理系もいくつか載っています. 前田敦司