JPH0319032A - 関数処理方法 - Google Patents
関数処理方法Info
- Publication number
- JPH0319032A JPH0319032A JP15233889A JP15233889A JPH0319032A JP H0319032 A JPH0319032 A JP H0319032A JP 15233889 A JP15233889 A JP 15233889A JP 15233889 A JP15233889 A JP 15233889A JP H0319032 A JPH0319032 A JP H0319032A
- Authority
- JP
- Japan
- Prior art keywords
- type
- group
- binding
- procedure
- combination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、オブジェクト指向等の言語処理系における総
称関数の処理方法に関わる。
称関数の処理方法に関わる。
まず技術の背景となる総称関数の機能について述べる。
総称関数とは関数の一種であり、一つの関数名に対し複
数の手続き(メソド)を持つことができる。ここで複数
のメソドは、例えば整数型あるは、実数型のデータ型に
対して定義するものであり、総称関数が呼出されると引
数のデータ型に応じて該当するメソドが選択、実行され
る。このような総称関数の基本機能のプログラム例を第
2に示す。
数の手続き(メソド)を持つことができる。ここで複数
のメソドは、例えば整数型あるは、実数型のデータ型に
対して定義するものであり、総称関数が呼出されると引
数のデータ型に応じて該当するメソドが選択、実行され
る。このような総称関数の基本機能のプログラム例を第
2に示す。
def■ethod形式201はメソドを定義する形式
である。形式201うち、defwiethod (2
01a )はこの形式がdefmethod形式である
ことを示している。ml(201b)はこの形式で定義
するメソドが総称関数m1のメソドであることを示す。
である。形式201うち、defwiethod (2
01a )はこの形式がdefmethod形式である
ことを示している。ml(201b)はこの形式で定義
するメソドが総称関数m1のメソドであることを示す。
”((x cl))” (201c)はメソドの仮引
数Xがあり、Xに対する実引数はC1型に含まれるデー
タに限ることを示す、 body−of−m 1− c
1(201d)はメソドとして定義する手続きである
。同様にdefmethod形式202では、C2型の
引数に対するメソドとして手続きbady−of−ml
−c2(202d)を定義している。
数Xがあり、Xに対する実引数はC1型に含まれるデー
タに限ることを示す、 body−of−m 1− c
1(201d)はメソドとして定義する手続きである
。同様にdefmethod形式202では、C2型の
引数に対するメソドとして手続きbady−of−ml
−c2(202d)を定義している。
defclass形式203はデータ型を定義する形式
である。形式203のうち、defclass (20
3a)はこの形式がdefclass形式であることを
示している。cl (203b)はこの形式で01とい
う名のデータ型を定義することを示す。II()TI(
203c)はここで定義するデータ型が上位形(後述す
る)を持たないことを示す、 description
−of−cl (203d)はデータ型の構成等の記述
である。同様にdefclass形204は、cl型を
上位型とするC2型を定義している。ここで上位型とは
当該の型を包含する型を言う。つまり、C2型はcl型
の一部であり、C2型に属するデータはcl型にも属す
ることになる。
である。形式203のうち、defclass (20
3a)はこの形式がdefclass形式であることを
示している。cl (203b)はこの形式で01とい
う名のデータ型を定義することを示す。II()TI(
203c)はここで定義するデータ型が上位形(後述す
る)を持たないことを示す、 description
−of−cl (203d)はデータ型の構成等の記述
である。同様にdefclass形204は、cl型を
上位型とするC2型を定義している。ここで上位型とは
当該の型を包含する型を言う。つまり、C2型はcl型
の一部であり、C2型に属するデータはcl型にも属す
ることになる。
形式201〜204が実行されている時点で。
総称関数呼出し形式211を実行する場合の動作につい
て述べる。形式211のうち、 ml (211a)は呼出すべき総称関数名である。
て述べる。形式211のうち、 ml (211a)は呼出すべき総称関数名である。
objl (21l b)は引数である。引数obj
1の値が02型のデータであればメソド202dを実行
する。引数obj 1の値がcl型のデータであれがメ
ソド201dおよび202dはともに引数型を満たすが
、メソド201dのほうがより下位の型が指定されてい
るのでこれを実行する。
1の値が02型のデータであればメソド202dを実行
する。引数obj 1の値がcl型のデータであれがメ
ソド201dおよび202dはともに引数型を満たすが
、メソド201dのほうがより下位の型が指定されてい
るのでこれを実行する。
次に総膜関数におけるメソド結合機能について述べる。
メソド結合とは複数のメソドを選択し組合せ実行する機
能であり、3つのタイプに分がれる。II準メソド結合
タイプ、組込みメソド結合タイプおよび短形式宣言メソ
ド結合タイプである。
能であり、3つのタイプに分がれる。II準メソド結合
タイプ、組込みメソド結合タイプおよび短形式宣言メソ
ド結合タイプである。
この3つのタイプでは総称関数毎に選択することができ
る。既定値は標準メソド結合タイプであり第2図の総称
関数m1も標準メソド結合タイプとなる。
る。既定値は標準メソド結合タイプであり第2図の総称
関数m1も標準メソド結合タイプとなる。
まず、標準メソド結合タイプについて第2図の例を用い
て説明する。 defmethod形式205〜2%式
% の識別子を付与してメソドを定義している。
て説明する。 defmethod形式205〜2%式
% の識別子を付与してメソドを定義している。
識別子: before付きで定義されるメソド(20
5d、206d)をビフォーメソドと呼び識別子なしで
定義されるメソド(プライマリメソド、201d、20
2d)の前で実行するメソド/ となる、ffi別子: after付きで定法されるメ
ソド(207d、208d)をアフターメソドと称し、
プライマリメソドの後で実行するメソドとなる。
5d、206d)をビフォーメソドと呼び識別子なしで
定義されるメソド(プライマリメソド、201d、20
2d)の前で実行するメソド/ となる、ffi別子: after付きで定法されるメ
ソド(207d、208d)をアフターメソドと称し、
プライマリメソドの後で実行するメソドとなる。
識別子Caround付きで定義されるメソド(209
d、210d)をアラウンドメソドとプライマリメソド
については、当該のメソド実行中にcall−next
−method形式という既定の形式によって、他のメ
ソドを呼出すことができる。このような標準メソド結合
タイプでの動作を第3図を用いて説明する。
d、210d)をアラウンドメソドとプライマリメソド
については、当該のメソド実行中にcall−next
−method形式という既定の形式によって、他のメ
ソドを呼出すことができる。このような標準メソド結合
タイプでの動作を第3図を用いて説明する。
形式201〜210が実行された時点で、総称関数呼出
し形式を212を実行したとする。引数obj2 (2
12b)の値が02型のデータの場合は、第3図(a)
に示すよう、まずc2型指定のアラウンドメソド(21
0d)を呼出す。ここでメソド(201d)は引数型を
満たすメソドのうち、最も下位の型指定のアラウンドメ
ソドである。
し形式を212を実行したとする。引数obj2 (2
12b)の値が02型のデータの場合は、第3図(a)
に示すよう、まずc2型指定のアラウンドメソド(21
0d)を呼出す。ここでメソド(201d)は引数型を
満たすメソドのうち、最も下位の型指定のアラウンドメ
ソドである。
メソド(210d)実行中にcall−next−me
thod形式が実行されるとcl型指定のアラウンドメ
ソド(209d)を呼出す、メソド(209d)はメソ
ド(210d)の次に下位の型指定のアラウンドメソド
である。メソド(209d)実行中にcall−nex
t−methodが実行されると、もはやアラウンドメ
ソドはないので、ビフォーメソド、プライマリメソドお
よびアフターメソドを呼出すことにする。まずビフォー
メソドでは、型指定の下位のものより順にメソド206
d、メソド205dを呼出す6次に最も下位型指定のプ
ライマリメソド202dを呼出す、さらに型指定の上位
のものより順にアフターメソド207dおよびアフター
メソド208dを呼出す、このうち、プライマリメソド
202dの実行中にcall−next method
が実行されれば、次に下1位型指定のプライマリメソッ
ド201dを呼出すことになる。
thod形式が実行されるとcl型指定のアラウンドメ
ソド(209d)を呼出す、メソド(209d)はメソ
ド(210d)の次に下位の型指定のアラウンドメソド
である。メソド(209d)実行中にcall−nex
t−methodが実行されると、もはやアラウンドメ
ソドはないので、ビフォーメソド、プライマリメソドお
よびアフターメソドを呼出すことにする。まずビフォー
メソドでは、型指定の下位のものより順にメソド206
d、メソド205dを呼出す6次に最も下位型指定のプ
ライマリメソド202dを呼出す、さらに型指定の上位
のものより順にアフターメソド207dおよびアフター
メソド208dを呼出す、このうち、プライマリメソド
202dの実行中にcall−next method
が実行されれば、次に下1位型指定のプライマリメソッ
ド201dを呼出すことになる。
総称関数呼出し形式212の引数obj 2の値がcl
型のデータである場合には、引数型を満たすメソドが2
09d、205d、201dおよび207dだけとなる
。そこで第3図(b)に示すように、まずアラウンドメ
ソド209dを呼出し、call−next−meth
odが実行されれば、ビフォーメソド205d、プライ
マリメソド201d、アフターメソド207dを順に呼
出すことになる。
型のデータである場合には、引数型を満たすメソドが2
09d、205d、201dおよび207dだけとなる
。そこで第3図(b)に示すように、まずアラウンドメ
ソド209dを呼出し、call−next−meth
odが実行されれば、ビフォーメソド205d、プライ
マリメソド201d、アフターメソド207dを順に呼
出すことになる。
短形式宣言メソド結合タイプの例を第5図に示す、形式
501ではメソド結合のオペレータ*を定義している。
501ではメソド結合のオペレータ*を定義している。
形式502では総称関数m3がオペレータ本によるメソ
ド結合を行うことを定義している。オペレータが定義さ
れた総称関数では、引数型を満たすブライマリメソドを
下位の型指定のものより順に呼出し、それぞれのメソド
の返答にオペレータを適用させる。例えばオペレータが
*なら、本は乗算関数を示すシンボルなので、各メソド
の返答を掛は合せることになる。なお、短形式宣言メソ
ド結合タイプでは、プライマリメソドのほかアラウンド
メソドも用いることができる。
ド結合を行うことを定義している。オペレータが定義さ
れた総称関数では、引数型を満たすブライマリメソドを
下位の型指定のものより順に呼出し、それぞれのメソド
の返答にオペレータを適用させる。例えばオペレータが
*なら、本は乗算関数を示すシンボルなので、各メソド
の返答を掛は合せることになる。なお、短形式宣言メソ
ド結合タイプでは、プライマリメソドのほかアラウンド
メソドも用いることができる。
組込みメソド結合タイプの機能は短形式宣言タイプのそ
れと同様である。ただ、短形式宣言タイプでは、例えば
形式501によってメソド結合のオペレータをユーザが
定義するのに対し、組込みメソド結合タイプのオペレー
タはシステムで規定したものを用いる。
れと同様である。ただ、短形式宣言タイプでは、例えば
形式501によってメソド結合のオペレータをユーザが
定義するのに対し、組込みメソド結合タイプのオペレー
タはシステムで規定したものを用いる。
最後に総称関数の利用環境について述べる。
オブジェクト指向等の対括型言語の総称関数番。
おいては、対話の過程で型やメソドの定義を追カ修正し
ながらプログラムを実行していく。総称σ数の制御で参
照すべき型、メソド、メソド結合R式等は、実際の関数
呼出しが起こった時点で定云されているものでなければ
ならない、そこで、般には、総称関数呼出しの制御では
、当該総称y言のメソド群のうちより引数の型の合うメ
ソド「を選択する処理を毎回行い、選択されたメソド「
とメソド結合形式に従ってメソドの呼出し制御各行うこ
とになっていた。
ながらプログラムを実行していく。総称σ数の制御で参
照すべき型、メソド、メソド結合R式等は、実際の関数
呼出しが起こった時点で定云されているものでなければ
ならない、そこで、般には、総称関数呼出しの制御では
、当該総称y言のメソド群のうちより引数の型の合うメ
ソド「を選択する処理を毎回行い、選択されたメソド「
とメソド結合形式に従ってメソドの呼出し制御各行うこ
とになっていた。
このような総称関数を高速に処理する方式に1いては、
ニー・シー・エム、オブジェクト・オリエンティド・プ
ログラミング・システム・ランケージ・アンド・アプリ
ケーション、 ’86 (1986)第1頁より第8頁(ACM、0b
ject−Oriented Programming
System、 Languages and Ap
plication ’86(1986) ppl−8
)において論じられている。上記文献によれば、型録に
総称関数名をキーとして適用すべきメソドまたはメソド
結合形を値とするメソド結合対応表を設け、当該型の引
数による総称関数呼出しが起こると上記メソド結合対応
表上で該当する総膜関数名を検索し、値であるメソドま
たはメソド結合形を適用する。
ニー・シー・エム、オブジェクト・オリエンティド・プ
ログラミング・システム・ランケージ・アンド・アプリ
ケーション、 ’86 (1986)第1頁より第8頁(ACM、0b
ject−Oriented Programming
System、 Languages and Ap
plication ’86(1986) ppl−8
)において論じられている。上記文献によれば、型録に
総称関数名をキーとして適用すべきメソドまたはメソド
結合形を値とするメソド結合対応表を設け、当該型の引
数による総称関数呼出しが起こると上記メソド結合対応
表上で該当する総膜関数名を検索し、値であるメソドま
たはメソド結合形を適用する。
ここでメソド結合形とは、第3図の(a)全体の手続き
または(b)全体の手続きに相当する内容の手続きであ
る。
または(b)全体の手続きに相当する内容の手続きであ
る。
上記従来技術では、以下の4点の問題があった。
第−点は、型録にメソド結合対応表を設けているため、
第4図に示すような被数の引数の型によってメソドを選
択しメソド結合を実施するような総称関数を扱えないこ
とである。
第4図に示すような被数の引数の型によってメソドを選
択しメソド結合を実施するような総称関数を扱えないこ
とである。
第二点は、型の定義時にメソド結合対応表を生成する必
要があるので型定義の負荷が大きいことである。新しい
型が定義されると、すべての総称関数について当該の型
の引数で適用可能なメソド群を判定し、その結果に基づ
いてメソド結合形を生成し、メソド結合対応表に登録し
なければならない0例えば、第2図の形式201〜20
3実行後でのdefclass形式204では、まず、
総称関数m1について形式201および形式202によ
るメソドを適用判定し、両方とも適用可能という結果か
ら第3図(Q)のようなメソド結合形を生成する。
要があるので型定義の負荷が大きいことである。新しい
型が定義されると、すべての総称関数について当該の型
の引数で適用可能なメソド群を判定し、その結果に基づ
いてメソド結合形を生成し、メソド結合対応表に登録し
なければならない0例えば、第2図の形式201〜20
3実行後でのdefclass形式204では、まず、
総称関数m1について形式201および形式202によ
るメソドを適用判定し、両方とも適用可能という結果か
ら第3図(Q)のようなメソド結合形を生成する。
第三点は、総称関数の定義またはメソドの追加定義時に
複数のメソド結合対応表を更新する必要があり、総称関
数の定義またはメソドの追加定義の負荷が大きいことで
ある0例えば、第2図の形式201〜204が実行され
ている時点より、defmethod形式205〜21
oを実行していくと、cl型およびc2型のメソド結合
対応表を各式の実行毎に更新することになる。cl型の
メソド結合対応表のmlの値は、形式204実行時に第
3図(d)のような単独なメソドであり、形式210実
行後には第3図(b)のようなメソド結合形にしていか
なければならないbc2型のメソド結合対応表では、第
3図(c)のメソド結合形より第3図(a)のメソド結
合形に変えていがなければならない。
複数のメソド結合対応表を更新する必要があり、総称関
数の定義またはメソドの追加定義の負荷が大きいことで
ある0例えば、第2図の形式201〜204が実行され
ている時点より、defmethod形式205〜21
oを実行していくと、cl型およびc2型のメソド結合
対応表を各式の実行毎に更新することになる。cl型の
メソド結合対応表のmlの値は、形式204実行時に第
3図(d)のような単独なメソドであり、形式210実
行後には第3図(b)のようなメソド結合形にしていか
なければならないbc2型のメソド結合対応表では、第
3図(c)のメソド結合形より第3図(a)のメソド結
合形に変えていがなければならない。
第四点は、型の再定義の負荷が大きいことである。型を
再定義する場合には、当該の型のメソド結合対応表を作
成しなおすばかりか、下位の型のすべてにわたってメソ
ド結合対応表を作り直す必要がある0例えば、第2図の
形式201〜210を実行した後でc2型をcl型の下
位型ではない型として再定義したとすれば、c2型の引
数で適用可能なメソドは、c1型指定のメソド群(20
1cl、 205d、 207d、 209d)および
C・2型指定のメソド群(202d、206d。
再定義する場合には、当該の型のメソド結合対応表を作
成しなおすばかりか、下位の型のすべてにわたってメソ
ド結合対応表を作り直す必要がある0例えば、第2図の
形式201〜210を実行した後でc2型をcl型の下
位型ではない型として再定義したとすれば、c2型の引
数で適用可能なメソドは、c1型指定のメソド群(20
1cl、 205d、 207d、 209d)および
C・2型指定のメソド群(202d、206d。
208d、210d)より、c2型指定のメソド群のみ
となる。そこで、c2型のメソド結合対応表を変更しな
ければならないが、もしc2型を上位型とする型が定義
されていたならば、それらの型のメソド結合対応表も変
更しなければならない。
となる。そこで、c2型のメソド結合対応表を変更しな
ければならないが、もしc2型を上位型とする型が定義
されていたならば、それらの型のメソド結合対応表も変
更しなければならない。
本発明の目的は、以下の2点である。
第−点は、複数の引数の型によってメソドを選択し、メ
ソド結合形を決定するような総称関数も高速に処理可能
とすることである。
ソド結合形を決定するような総称関数も高速に処理可能
とすることである。
第二点は、型の定義、再定義、総称関数の定義、メソド
の追加などのプログラムの変更に対して高速に対応可能
とすることである。オブジェクト指向のように総称関数
を含む言語では、対話環境のもとでプログラムを少しず
つ追加、修正しながら作成していく場合が多い。このた
め、上記のようなプログラム変更を円滑に行えることが
言語処理系にとって本質的な要件となっている。
の追加などのプログラムの変更に対して高速に対応可能
とすることである。オブジェクト指向のように総称関数
を含む言語では、対話環境のもとでプログラムを少しず
つ追加、修正しながら作成していく場合が多い。このた
め、上記のようなプログラム変更を円滑に行えることが
言語処理系にとって本質的な要件となっている。
上記第−点の目的を達成するため、メソド結合対応表を
総称関数毎に設け、かつキー部を木構造とし、木の第−
層には第一の引数の型識別子、第二層には各々第一層の
型識別子を第一の引数とした場合に第二の引数の型識別
子というように、枝分れを表すように型識別子を配置し
たものである。
総称関数毎に設け、かつキー部を木構造とし、木の第−
層には第一の引数の型識別子、第二層には各々第一層の
型識別子を第一の引数とした場合に第二の引数の型識別
子というように、枝分れを表すように型識別子を配置し
たものである。
上記第二点の目的を達成するため、上記の総称関数毎の
メソド結合対応表のキー部の型識別子に、値の形式を計
算した時点での型定義のバージJン情報を持たせるよう
にしたものである。
メソド結合対応表のキー部の型識別子に、値の形式を計
算した時点での型定義のバージJン情報を持たせるよう
にしたものである。
また、上記第二点の目的を達成するため、上記の総称関
数毎のメソド結合対応表の鎧部をそれぞれ制御部とデー
タ部に分けて構成する。
数毎のメソド結合対応表の鎧部をそれぞれ制御部とデー
タ部に分けて構成する。
また、上記第二点の目的を達成するため、上記の総称関
数毎のメソド結合対応表の鎧部をそれぞれ制御部とデー
タ部分に分けて構成する。
数毎のメソド結合対応表の鎧部をそれぞれ制御部とデー
タ部分に分けて構成する。
上記制御部には、特定のメソド結合タイプおよび特定の
識別子のメソドの場合に共通に利用できるメソド結合の
手続きを設定し、上記データ部には、当該キーの型識別
子群を満たす適用可能なメソド候補群等を設定するもの
である。
識別子のメソドの場合に共通に利用できるメソド結合の
手続きを設定し、上記データ部には、当該キーの型識別
子群を満たす適用可能なメソド候補群等を設定するもの
である。
さらに、上記メソド結合手続きと上記適用可能なメソド
候補群について以下の5つの形式を用意するものである
。
候補群について以下の5つの形式を用意するものである
。
標準メソド結合でプライマリ・メソドのみの場合には、
上記データ部をプライマリ・メソド群により構成し、制
御部を最も下位型指定のプライマリ・メソドを呼出す手
続き(第1メソド結合手続か)により構成したものであ
る(鎖部第1形式)。
上記データ部をプライマリ・メソド群により構成し、制
御部を最も下位型指定のプライマリ・メソドを呼出す手
続き(第1メソド結合手続か)により構成したものであ
る(鎖部第1形式)。
また、標準メソド結合でアラウンド・メソドを含まない
場合には、上記データ部を当該の引数型で適用可能なビ
フォー・メソド群、プライマリ・メソド群およびアフタ
ー・メソド群により構成し、制御部を、ビフォー・メソ
ド群を最も下位型指定のメソドより順に呼出し、最も下
位型指定のプライマリ・メソドを呼出し、アフター・メ
ソド群を最も上位型指定のメソドより順に呼出す第2メ
ソド結合手続きにより構成したものである(値部第2形
式)。
場合には、上記データ部を当該の引数型で適用可能なビ
フォー・メソド群、プライマリ・メソド群およびアフタ
ー・メソド群により構成し、制御部を、ビフォー・メソ
ド群を最も下位型指定のメソドより順に呼出し、最も下
位型指定のプライマリ・メソドを呼出し、アフター・メ
ソド群を最も上位型指定のメソドより順に呼出す第2メ
ソド結合手続きにより構成したものである(値部第2形
式)。
また、標準メソド結合でアラウンド・メソドを含む場合
には、データ部を、適用可能なアラウンド・メソド群、
プライマリ・メソド群およびアフター・メソド群により
構成し、ただし、上記アラウンド・メソド群に鴎最も上
位型指定のメソドとして、上記ビフォー・メソド群、プ
ライマリ・メソド群およびアフター・メソド群を引数と
して第2メソド結合手続きを呼出す内容のメソド(第1
制御メソド)を付加しておき、制御部を、最も下位型指
定のアラアウンド・メソドを呼出す手続き(第3メソド
結合手続き)により構成したものである(値部第3形式
)。
には、データ部を、適用可能なアラウンド・メソド群、
プライマリ・メソド群およびアフター・メソド群により
構成し、ただし、上記アラウンド・メソド群に鴎最も上
位型指定のメソドとして、上記ビフォー・メソド群、プ
ライマリ・メソド群およびアフター・メソド群を引数と
して第2メソド結合手続きを呼出す内容のメソド(第1
制御メソド)を付加しておき、制御部を、最も下位型指
定のアラアウンド・メソドを呼出す手続き(第3メソド
結合手続き)により構成したものである(値部第3形式
)。
また1組込みメソド結合または短形式宣言メソド結合で
アラウンド・メソドを含まない場合には、データ部を当
該メソド結合のオペレータおよび適用可能なプライマリ
・メソド群により構成し、制御部を上記プライマリ・メ
ソド群を呼出してその値部を引数として上記オペレータ
を呼出す第4メソド結合手続きにより構成したものであ
る(値部第4形式)。
アラウンド・メソドを含まない場合には、データ部を当
該メソド結合のオペレータおよび適用可能なプライマリ
・メソド群により構成し、制御部を上記プライマリ・メ
ソド群を呼出してその値部を引数として上記オペレータ
を呼出す第4メソド結合手続きにより構成したものであ
る(値部第4形式)。
また、組込みメソド結合または短形式宣言メソドでアラ
ウンド・メソドを含む場合には、データ部を当該メソド
結合のオペレータ、適用可能なプライマリ・メソド群お
よびアラウンド・メソド群により構成する。ただし、上
記アラウンド・メソド群には、最も上位型指定のメソド
として、上記オペレータおよびプライマリ・メソド群を
引数として第4メソド結合手続きを呼出す内容のメソド
(第2制御メソド)を付加しておき、制御部を最も下位
型指定のアラウンド・メソドを呼出す第5メソド結合手
続きにより構成したものである(値部第5形式)。
ウンド・メソドを含む場合には、データ部を当該メソド
結合のオペレータ、適用可能なプライマリ・メソド群お
よびアラウンド・メソド群により構成する。ただし、上
記アラウンド・メソド群には、最も上位型指定のメソド
として、上記オペレータおよびプライマリ・メソド群を
引数として第4メソド結合手続きを呼出す内容のメソド
(第2制御メソド)を付加しておき、制御部を最も下位
型指定のアラウンド・メソドを呼出す第5メソド結合手
続きにより構成したものである(値部第5形式)。
総称関数が呼出されると、与えられた引数の型を調べ、
当該総称関数のメソド結合対応表を検索する。先ず第一
の引数の型とメソド結合対応表のキー部の第−層に配置
された型識別子を比較し、−mするものがあれば、第二
の引数の型と当該の型識別子に対して配置されている第
二層の型識別子を照合していく。このように最後の引数
の型まで照合し一致するキーがあれば、当該キーに対す
る値をメソド結合候補とする。
当該総称関数のメソド結合対応表を検索する。先ず第一
の引数の型とメソド結合対応表のキー部の第−層に配置
された型識別子を比較し、−mするものがあれば、第二
の引数の型と当該の型識別子に対して配置されている第
二層の型識別子を照合していく。このように最後の引数
の型まで照合し一致するキーがあれば、当該キーに対す
る値をメソド結合候補とする。
次に一致した型識別子のバージョン情報と当該型の最新
のバージョン情報を照合する。ここで、型が定義または
再定義されるとバージョン情報を含む型識別子が生成さ
れることとする。また最新の型識別子は常時型名よりポ
イントされているとする。すべての型識別子のバージョ
ン情報が最新のものと一致すれば、当該のメソド結合候
補は有効である。
のバージョン情報を照合する。ここで、型が定義または
再定義されるとバージョン情報を含む型識別子が生成さ
れることとする。また最新の型識別子は常時型名よりポ
イントされているとする。すべての型識別子のバージョ
ン情報が最新のものと一致すれば、当該のメソド結合候
補は有効である。
メソド結合候補は5種の形式を有しているが、いずれも
制御部とデータ部よりなり、制御部の手続きにデータ部
のメソド群を引数として適用し、メソド結合を実行する
。例えば、当該の総称関数が標準メソド結合である場合
には値部第1形式であり、データ部のプライマリメソド
群を引数として制御部の第1メソド結合手続きを呼出す
。第1メソド結合手続きのなかでは、与えられた引数よ
りも最も下位型指定のメソドを選んでこれを呼出すこと
になる。
制御部とデータ部よりなり、制御部の手続きにデータ部
のメソド群を引数として適用し、メソド結合を実行する
。例えば、当該の総称関数が標準メソド結合である場合
には値部第1形式であり、データ部のプライマリメソド
群を引数として制御部の第1メソド結合手続きを呼出す
。第1メソド結合手続きのなかでは、与えられた引数よ
りも最も下位型指定のメソドを選んでこれを呼出すこと
になる。
型識別子のバージョン情報で一致しないものがあれば、
当該のメソド結合候補は古い型定義のもとで登録された
ものということになるので、当該の鎖部を登録しなおし
て利用する。
当該のメソド結合候補は古い型定義のもとで登録された
ものということになるので、当該の鎖部を登録しなおし
て利用する。
鎖部の登録は、まず当該のキーの引数型を満たすメソド
群を判定し適用メソド候補群とする。次にメソド結合タ
イプと上記通用メソド候補群の種類により、値部第1形
式〜値部第5形式のいずれかを選択して鎖部を設定する
。最後に最新の型識別子をキー部に設定する。
群を判定し適用メソド候補群とする。次にメソド結合タ
イプと上記通用メソド候補群の種類により、値部第1形
式〜値部第5形式のいずれかを選択して鎖部を設定する
。最後に最新の型識別子をキー部に設定する。
最後の引数の型まで一致するキーがない場合は、バージ
モレ情報不一致の場合と同様に適用メソド候補群を判定
し鎖部を設定し、さらに木構造のキーの該当する位置に
最新の型識別子を追加する。
モレ情報不一致の場合と同様に適用メソド候補群を判定
し鎖部を設定し、さらに木構造のキーの該当する位置に
最新の型識別子を追加する。
こうして次回よりはここで設定した値を利用することに
する。
する。
既に定義されている総称関数にメソドを追加する場合に
は、当該総称関数のメソド結合対応表の各鎖部のデータ
部に対して、当該キーの型で当該メソドが適用可能なら
ばこれを追加する。追加に当っては、メソドの識別子を
判定し1例えばアラウンド・メソドならばアラウンド・
メソド群に追加する。同じ識別子のメソド群がないとき
は鎖部形式を変更し、例えば鎖部が値部第2形式でそこ
にアラウンド・メソドを追加するとすれば、鎖部の形式
を値部第3形式と変更する0以上の処理により、メソド
結合対応表の鎖部にはキー部の型に対応した最新のメソ
ト群などが設定されることになり誤動作しない。
は、当該総称関数のメソド結合対応表の各鎖部のデータ
部に対して、当該キーの型で当該メソドが適用可能なら
ばこれを追加する。追加に当っては、メソドの識別子を
判定し1例えばアラウンド・メソドならばアラウンド・
メソド群に追加する。同じ識別子のメソド群がないとき
は鎖部形式を変更し、例えば鎖部が値部第2形式でそこ
にアラウンド・メソドを追加するとすれば、鎖部の形式
を値部第3形式と変更する0以上の処理により、メソド
結合対応表の鎖部にはキー部の型に対応した最新のメソ
ト群などが設定されることになり誤動作しない。
以下、本発明の一実施例である総称関数処理方式を第1
図により説明する。
図により説明する。
総称関数のソースプログラム200は、定義形式(20
1,205)と実行形式(211,212)を含み上記
2つの形式が任意の順序で並べられたものである。定義
変更制御プログラム123は、上記定義形式を入力とし
く154,155) 、総称関数群124を生成または
追加、修正する(156)ものである。
1,205)と実行形式(211,212)を含み上記
2つの形式が任意の順序で並べられたものである。定義
変更制御プログラム123は、上記定義形式を入力とし
く154,155) 、総称関数群124を生成または
追加、修正する(156)ものである。
総称関数呼出し制御プログラム122は、上記実行形式
およびデータ125を入力としく152゜153.15
1)、総称関数群124を参照(158)あるいは追加
、修正しながら(157)プログラムを実行し、実行結
果121を出力する(159)ものである。
およびデータ125を入力としく152゜153.15
1)、総称関数群124を参照(158)あるいは追加
、修正しながら(157)プログラムを実行し、実行結
果121を出力する(159)ものである。
総称関数群124は計算機のメモリ上に実現されるデー
タ構造であり、総称関数名を示すシンボル102、総称
関数オブジェクト101、メソトリスト104およびメ
ソド結合対応表105の組により構成される。
タ構造であり、総称関数名を示すシンボル102、総称
関数オブジェクト101、メソトリスト104およびメ
ソド結合対応表105の組により構成される。
シンボル102は総称関数オブジェクト101をポイン
トしている。総称関数オブジェクトは、メソド結合タイ
プ103を保持し、メントリスト104および、メソド
結合対応表105をポイントしている。メソトリストは
、当該の総称関数に対して定義されたメソドのすべてを
保持する。メソド結合対応表は、引数の型をキーとし、
当該の総称関数が呼出された場合の処理を値とする表で
ある。キーに当たる部分は第一の引数から順に枝分かれ
するような木構造になっている。例えば第一の引数がA
1型(106で照合)、第二の引数がBl型(107で
照合)の場合には、A1・Blの値(108)に設定し
た処理を行うものとし、第1の引数がA1型で第二の引
数がB2型(131で照合)の場合には、A1・B2の
値(132)に設定した処理を行うものである。ここで
、キー部の木構造のなかで引数の型を示すのは型識別子
106である。型識別子は、型名109、バージョンI
Dll0および上位型111を持つ、ここでバージョン
IDとは、型が再定義されて型識別子が生成される毎に
別のID2図の形式203,204での02型に関して
言えば、cl型のことである。値(108)はそれぞれ
制御部(112)およびデータ部(113)によって構
成されている。定義変更制御プログラム123は、第2
0図に示すように、総称関数定義プログラム2011、
型定義および再定義プログラム2012およびメソト追
加定義プログラム2013よりなる。
トしている。総称関数オブジェクトは、メソド結合タイ
プ103を保持し、メントリスト104および、メソド
結合対応表105をポイントしている。メソトリストは
、当該の総称関数に対して定義されたメソドのすべてを
保持する。メソド結合対応表は、引数の型をキーとし、
当該の総称関数が呼出された場合の処理を値とする表で
ある。キーに当たる部分は第一の引数から順に枝分かれ
するような木構造になっている。例えば第一の引数がA
1型(106で照合)、第二の引数がBl型(107で
照合)の場合には、A1・Blの値(108)に設定し
た処理を行うものとし、第1の引数がA1型で第二の引
数がB2型(131で照合)の場合には、A1・B2の
値(132)に設定した処理を行うものである。ここで
、キー部の木構造のなかで引数の型を示すのは型識別子
106である。型識別子は、型名109、バージョンI
Dll0および上位型111を持つ、ここでバージョン
IDとは、型が再定義されて型識別子が生成される毎に
別のID2図の形式203,204での02型に関して
言えば、cl型のことである。値(108)はそれぞれ
制御部(112)およびデータ部(113)によって構
成されている。定義変更制御プログラム123は、第2
0図に示すように、総称関数定義プログラム2011、
型定義および再定義プログラム2012およびメソト追
加定義プログラム2013よりなる。
次に総称関数群124と総称関数プログラムおよびデー
タとの関係について述べる。総称関数プログラムの定義
部たとえば第2図の形式201での総称関数名ml (
201b)は、総称関数群124のなかの総称関数名m
1(201b)は、総称関数群124のなかのシンボル
102となり、実行部たとえば第2図の形式211での
総称関数名m1(211a)で参照することができる。
タとの関係について述べる。総称関数プログラムの定義
部たとえば第2図の形式201での総称関数名ml (
201b)は、総称関数群124のなかの総称関数名m
1(201b)は、総称関数群124のなかのシンボル
102となり、実行部たとえば第2図の形式211での
総称関数名m1(211a)で参照することができる。
総称関数の引数として渡されるデータたとえば形式21
1の引数objl (21l b)の値は、第21図(
a)のデータ2101のように型識別子の型識別子のな
かで最新の定義によるものは、第21図(b)に示すよ
うに、扇型識別子の型名シンボル2103より最新バー
ジョンとしてポイントされている(2104)ことにす
る。
1の引数objl (21l b)の値は、第21図(
a)のデータ2101のように型識別子の型識別子のな
かで最新の定義によるものは、第21図(b)に示すよ
うに、扇型識別子の型名シンボル2103より最新バー
ジョンとしてポイントされている(2104)ことにす
る。
メソド結合対応表105の鎖部108の制御部112お
よびデータ部113の形式は、第6図に示すように、メ
ソド結合のタイプとメソドの種類により5つに分かれる
。
よびデータ部113の形式は、第6図に示すように、メ
ソド結合のタイプとメソドの種類により5つに分かれる
。
標準メソド結合タイプでプライマリ・メソドのみの場合
は値部第1形式601が用いられる。プライマリ・メソ
ドのほかにビフォー・メソドもしくはアフター・メソド
を含み、アラウンド・メソドを含まない場合には値部第
2形式602が用いられる。アララン・メソドを含む場
合には値部第3形式603が用いられる。
は値部第1形式601が用いられる。プライマリ・メソ
ドのほかにビフォー・メソドもしくはアフター・メソド
を含み、アラウンド・メソドを含まない場合には値部第
2形式602が用いられる。アララン・メソドを含む場
合には値部第3形式603が用いられる。
組込みメソド結合タイプもしくは短形宜言型メソド結合
タイプでプライマリ・メソドのみの場合には値部第4形
式604が用いられる。プライマリ・メソドのほかにア
ラウンド・メソドを含む湯漬部第1形式〜値部第5形式
の制御部で用いる第1メソド結合手続き〜第5メソド結
合手続きについて第7図〜第11図を用いて説明する。
タイプでプライマリ・メソドのみの場合には値部第4形
式604が用いられる。プライマリ・メソドのほかにア
ラウンド・メソドを含む湯漬部第1形式〜値部第5形式
の制御部で用いる第1メソド結合手続き〜第5メソド結
合手続きについて第7図〜第11図を用いて説明する。
第7図に示す、第1メソド結合手続き701は、適用可
能なプライマリ・メソト群を引数とし、このうち最も下
位の型指定のメソドを呼出すものである。
能なプライマリ・メソト群を引数とし、このうち最も下
位の型指定のメソドを呼出すものである。
第8図に示す第2メソド結合手続き80.1は、適用可
能なプライマリ・メソト群、同ビフォー・メソド群およ
び同アフター・メソト群を引数とし、ビフォー・メソド
群を下位型指定の順に呼出し、最も下位の型指定のプラ
イマリ・メソトを呼出し、アフター・メソド群を上位型
指定の順に呼出し、プライマリ・メソドの値を結果とし
て返すものである。
能なプライマリ・メソト群、同ビフォー・メソド群およ
び同アフター・メソト群を引数とし、ビフォー・メソド
群を下位型指定の順に呼出し、最も下位の型指定のプラ
イマリ・メソトを呼出し、アフター・メソド群を上位型
指定の順に呼出し、プライマリ・メソドの値を結果とし
て返すものである。
第9図に示す第3メソド結合手続き901は、適用可能
なプライマリ・メソド群、同ビフォー、・メソド群、同
アフター・メソド群および同アラウンド・メソド群を引
数とし、プライマリ・メソド群、ビイオー・メソド群お
よびアフター・メソド群をメソド群保存変数1 (90
2)に保存し、最も下位型指定のアラウンド・メソドを
呼出すものである。
なプライマリ・メソド群、同ビフォー、・メソド群、同
アフター・メソド群および同アラウンド・メソド群を引
数とし、プライマリ・メソド群、ビイオー・メソド群お
よびアフター・メソド群をメソド群保存変数1 (90
2)に保存し、最も下位型指定のアラウンド・メソドを
呼出すものである。
第10図に示す第4メソド結合手続き1001は、メソ
ド結合のオペレータおよび適用可能なプライマリ・メソ
ド群を引数とし、下位型指定の順にプライマリ・メソド
を呼出しその鎖部を引数としてオペレータを呼出すもの
である。
ド結合のオペレータおよび適用可能なプライマリ・メソ
ド群を引数とし、下位型指定の順にプライマリ・メソド
を呼出しその鎖部を引数としてオペレータを呼出すもの
である。
第11図に示す第5メソド結合手続き1101は、メソ
ド結合のオペレータ、適用可能なプライマリ・メソド群
・同アラウンド・メソド群を引数とし、プライマリ・メ
ソド群およびオペレータをメソド群保存変数2 (11
02)に保存し、最も下位型指定のアラウンド・メソド
を呼出すものである。
ド結合のオペレータ、適用可能なプライマリ・メソド群
・同アラウンド・メソド群を引数とし、プライマリ・メ
ソド群およびオペレータをメソド群保存変数2 (11
02)に保存し、最も下位型指定のアラウンド・メソド
を呼出すものである。
第1図に示すメソド結合対応表105のデータ部113
には、第6図に示すとおり、当該総称関数に定義されて
いるメソドのうち当該キーで適用可能なもののほかに、
値部第3形式では第1制御メソド、値部第5形式では第
2制御メソドを設定する。
には、第6図に示すとおり、当該総称関数に定義されて
いるメソドのうち当該キーで適用可能なもののほかに、
値部第3形式では第1制御メソド、値部第5形式では第
2制御メソドを設定する。
第1制御メソド903は、第9図に示すとおり、プライ
マリ・メソド群、ビフォー・メソド群およびアフター・
メソド群をメソド群保存変数1(902)より参照し、
これらを引数として第2メソド結合手続き801を呼出
すものである。
マリ・メソド群、ビフォー・メソド群およびアフター・
メソド群をメソド群保存変数1(902)より参照し、
これらを引数として第2メソド結合手続き801を呼出
すものである。
第2制御メソド1103は、第11図に示すとおり、メ
ソド群保存変数2(1102)よりプライマリ・メソド
群およびオペレータを参照し、これらを引数として第1
0図に示す第10図に示す第4メソド結合手続き100
1を呼出すものである。
ソド群保存変数2(1102)よりプライマリ・メソド
群およびオペレータを参照し、これらを引数として第1
0図に示す第10図に示す第4メソド結合手続き100
1を呼出すものである。
次に、総称関数呼出し制御部122による関数呼出し処
理を第12図(a)を用いて説明する。
理を第12図(a)を用いて説明する。
いくつかの引数とともに総称関数が呼出されると。
第21図に示すようなり1数のデータ2101の各々に
ついて型識別子106より型名2103を取得しく12
01.1202) 、メソド結合対応表105のキーの
第−層から対応する順位の引数の型\o9と一致するキ
ーを検索し、一致したキーから枝分かれしている次の層
のキーを検索してい< (1203〜1206)、そこ
で最後の順位の引数まで一致するキーがあれば、それぞ
れ型名の最新バージョン2104のバージョンID21
05とキーのバージョンIDll0と比較する。バージ
ョンIDが一致すれば、値をそのまま用いることとし、
一致しなければ今や再定義されて無効になった型情報に
基づく値であると判定し、改めて値を計算しその結果を
当該の鎖部に登録し、当該キーは最新の型識別子に変更
する(1210゜1207.1212)。こうしてバー
ジョン情報を確認した鎖部のデータ部を引数として制御
部の手続きを呼出す(1213)、一致するキーがなけ
れば、末だ当該の引数型に対する値が登録されていない
と判定し新たに値を計算しキーを追加して登録したうえ
で(1207〜1209)データ部を引数として制御部
の手続きを呼出す(1213)、第12図の(b)に示
す値の計算(1207)は、総称関数オブジェクトのメ
ソド・いて、当該呼出しの引数がメソドの型指定を満足
するかを調べ(1222〜1225)、すべての引数に
ついて満足するメソドを識別子毎に収集しく1226)
、第6図に示した値部形式を判定して制御部を決定する
。さらに、値部第3形式ならアラウンド・メソド群に第
1制御メソド903を追加し値部第5形式ならアラウン
ド・メソド群に第2制御メソド1103を追加しデータ
部とする(1227,1228)。
ついて型識別子106より型名2103を取得しく12
01.1202) 、メソド結合対応表105のキーの
第−層から対応する順位の引数の型\o9と一致するキ
ーを検索し、一致したキーから枝分かれしている次の層
のキーを検索してい< (1203〜1206)、そこ
で最後の順位の引数まで一致するキーがあれば、それぞ
れ型名の最新バージョン2104のバージョンID21
05とキーのバージョンIDll0と比較する。バージ
ョンIDが一致すれば、値をそのまま用いることとし、
一致しなければ今や再定義されて無効になった型情報に
基づく値であると判定し、改めて値を計算しその結果を
当該の鎖部に登録し、当該キーは最新の型識別子に変更
する(1210゜1207.1212)。こうしてバー
ジョン情報を確認した鎖部のデータ部を引数として制御
部の手続きを呼出す(1213)、一致するキーがなけ
れば、末だ当該の引数型に対する値が登録されていない
と判定し新たに値を計算しキーを追加して登録したうえ
で(1207〜1209)データ部を引数として制御部
の手続きを呼出す(1213)、第12図の(b)に示
す値の計算(1207)は、総称関数オブジェクトのメ
ソド・いて、当該呼出しの引数がメソドの型指定を満足
するかを調べ(1222〜1225)、すべての引数に
ついて満足するメソドを識別子毎に収集しく1226)
、第6図に示した値部形式を判定して制御部を決定する
。さらに、値部第3形式ならアラウンド・メソド群に第
1制御メソド903を追加し値部第5形式ならアラウン
ド・メソド群に第2制御メソド1103を追加しデータ
部とする(1227,1228)。
次に第20図に示した型定義および再定義プログラム2
013の処理を第13図を用いて説明する。型が定義ま
たは再定義された場合には、型識別子106を生成し、
型名シンボルより直前での最近バージョン型識別子のバ
ージョンIDを取得し、これを更新して上記型識別子に
設定する。また、型名の最新バージョンとして上記の生
成した型識別子を設定する。第20図に示した総称関数
定義プログラム2011の処理を第14図を用いて説明
する。総称関数が定義された場合には、総称関数が定義
された場合には、総称関数オブジェクト101を生成し
メソド結合の種類103を設定しメソド・リスト104
およびメゾト結合対応表105を初期化(空リスト)し
ておき、総称関数名のシンボル102に設定する。
013の処理を第13図を用いて説明する。型が定義ま
たは再定義された場合には、型識別子106を生成し、
型名シンボルより直前での最近バージョン型識別子のバ
ージョンIDを取得し、これを更新して上記型識別子に
設定する。また、型名の最新バージョンとして上記の生
成した型識別子を設定する。第20図に示した総称関数
定義プログラム2011の処理を第14図を用いて説明
する。総称関数が定義された場合には、総称関数が定義
された場合には、総称関数オブジェクト101を生成し
メソド結合の種類103を設定しメソド・リスト104
およびメゾト結合対応表105を初期化(空リスト)し
ておき、総称関数名のシンボル102に設定する。
第20図に示したメソド追加定義プログラム2012の
処理を第15図を用いて説明する。総称関数にメソドが
追加された場合には、メソド結合対応表のキー毎にすべ
ての引数の型指定を満たすものかを判定しく1501〜
1504)、満たすキーについては鎖部を変更してい<
(1505〜1507)、鎖部の変更では、まずデー
タ部113に当該のメソドの識別子に対応するメソド群
があるかを判定しく1505)、あればそこに当該のメ
ソドを追加する(1506)、なければ、鎖部形式を変
更してデータ部に当該のメソドの識別子に対応するメソ
ド群を設けて(1507)、メソドを登録することにな
る。鎖部形式の変更(1507)は、第15図(b)に
示す3つの場合(1511,1512,1513)にの
み必要となる。以上の処理をメソド結合対応表105へ
の当該メソドの登録が終わりと、最後にメソド・リスト
104に当該のメソドを追加しておく(1508)。
処理を第15図を用いて説明する。総称関数にメソドが
追加された場合には、メソド結合対応表のキー毎にすべ
ての引数の型指定を満たすものかを判定しく1501〜
1504)、満たすキーについては鎖部を変更してい<
(1505〜1507)、鎖部の変更では、まずデー
タ部113に当該のメソドの識別子に対応するメソド群
があるかを判定しく1505)、あればそこに当該のメ
ソドを追加する(1506)、なければ、鎖部形式を変
更してデータ部に当該のメソドの識別子に対応するメソ
ド群を設けて(1507)、メソドを登録することにな
る。鎖部形式の変更(1507)は、第15図(b)に
示す3つの場合(1511,1512,1513)にの
み必要となる。以上の処理をメソド結合対応表105へ
の当該メソドの登録が終わりと、最後にメソド・リスト
104に当該のメソドを追加しておく(1508)。
以下、第4図、第5図の入力例に従って動作を説明する
。
。
defclass形式(401,402)により第16
図(、)に示すようにC1型およびC2型の型識別子(
1611および1612)が生成され、それぞれシンボ
ル(1621および1622)より最新バージョンとし
てポイントされる(1631および1632)ことにな
る。defmehod形式(404〜407)が評価さ
れ、さらにここで、総称関数m2についてC1型のデー
タとC1型のデータを引数とする呼出しく形式411)
、C2型のデータと01型のデータを引数とする呼出し
く形式412)およびC2型のデータとC2型のデータ
を引数とする呼出しく形式413)が起きると、メソド
結合対応表は第16図(b)のように生成されることに
なる。このような状態からメソドが追加さへた場合の動
作を以下説明する。
図(、)に示すようにC1型およびC2型の型識別子(
1611および1612)が生成され、それぞれシンボ
ル(1621および1622)より最新バージョンとし
てポイントされる(1631および1632)ことにな
る。defmehod形式(404〜407)が評価さ
れ、さらにここで、総称関数m2についてC1型のデー
タとC1型のデータを引数とする呼出しく形式411)
、C2型のデータと01型のデータを引数とする呼出し
く形式412)およびC2型のデータとC2型のデータ
を引数とする呼出しく形式413)が起きると、メソド
結合対応表は第16図(b)のように生成されることに
なる。このような状態からメソドが追加さへた場合の動
作を以下説明する。
defmethod形式408が追加定義されるとメソ
ド結合対応表1601のキー毎に引数型が調べられ、こ
こでは第131数02型、第2引数c2型のキーのみが
検索され鎖部1604aが更新される。
ド結合対応表1601のキー毎に引数型が調べられ、こ
こでは第131数02型、第2引数c2型のキーのみが
検索され鎖部1604aが更新される。
鎖部1640aは既にアフター・メソード群1605を
構成要素としているのでここに今回のメソド408dを
設定する。さらにdefmethld形式409が追加
定義されると同様に鎖部1604aが更新されることに
なるが、アラウンド・メソド群を構成要素としていない
ので第15図(b)に示した鎖部変更規則1502に従
い第16図(C)の鎖部1604bのように鎖部形式を
値部第3形式に変更し、既定のアラウンド・メソドであ
る第1制御メソド903とともに当該のアラウンド・メ
ソド409dを登録する。
構成要素としているのでここに今回のメソド408dを
設定する。さらにdefmethld形式409が追加
定義されると同様に鎖部1604aが更新されることに
なるが、アラウンド・メソド群を構成要素としていない
ので第15図(b)に示した鎖部変更規則1502に従
い第16図(C)の鎖部1604bのように鎖部形式を
値部第3形式に変更し、既定のアラウンド・メソドであ
る第1制御メソド903とともに当該のアラウンド・メ
ソド409dを登録する。
ここで総称関数が呼出された場合の動作例を示す。
総称関数m2にcl型の引数とC1型の引数が支えられ
る(形式414)と値1602が検索され、メソド、4
04 dプライマ・メソド群として第1メソド結合手続
き701を呼出し、そこからメソド404dを呼出すこ
とになる(702)。
る(形式414)と値1602が検索され、メソド、4
04 dプライマ・メソド群として第1メソド結合手続
き701を呼出し、そこからメソド404dを呼出すこ
とになる(702)。
総称関数m2にC1型の引数と02型の引数が与えられ
る(形式415)と該当するキーがないので、m2のメ
ソド群メソド404d〜409dのうちより適用可能な
メソドつまりプライマ・メソド404dおよびアフター
・メソド408dを選択しく1222〜1226)、鎖
部形式を第2値部形式602と判定し、第17図に示す
ようにキーを追加して鎖部1701を登録する。そのう
えで鎖部1701を参照してメソド404dをプライマ
リ・メソト群としメソド408dをアフター・メソド群
とし、ビフォー・メソド群をなしとして第2メソド結合
手続き801を呼出しそこからメソド404dを呼出し
く803)次にメソド408dを呼出してメソド404
dの値を結果として返すことになる。
る(形式415)と該当するキーがないので、m2のメ
ソド群メソド404d〜409dのうちより適用可能な
メソドつまりプライマ・メソド404dおよびアフター
・メソド408dを選択しく1222〜1226)、鎖
部形式を第2値部形式602と判定し、第17図に示す
ようにキーを追加して鎖部1701を登録する。そのう
えで鎖部1701を参照してメソド404dをプライマ
リ・メソト群としメソド408dをアフター・メソド群
とし、ビフォー・メソド群をなしとして第2メソド結合
手続き801を呼出しそこからメソド404dを呼出し
く803)次にメソド408dを呼出してメソド404
dの値を結果として返すことになる。
総称関数m2に02型の引数と02型の引数が与えられ
ると(形式416)と値1604bが検索され、メソド
404dと、メソド405dとメソド406dをプライ
マリ・メソド群、メソド407dをビフォー・メソド群
・メソド408dをアフター・メソド群、メソド409
dと第1制御メソド903をアラウンド・メソド群とし
て第3メソド結合手続き901を呼出す、そこから、メ
ソド404d〜408dをそれぞれのメソドの種類とと
もにメソド群保存変数1(902)に保存し、メソドに
409dを呼出す(905)、メソド409dはここで
唯一の本来のアラウンド・メソドであり、call−n
ext−method形式が評価されると(908かつ
909)第1制御メソド903を呼出すことになる。第
1制御メソド903では。
ると(形式416)と値1604bが検索され、メソド
404dと、メソド405dとメソド406dをプライ
マリ・メソド群、メソド407dをビフォー・メソド群
・メソド408dをアフター・メソド群、メソド409
dと第1制御メソド903をアラウンド・メソド群とし
て第3メソド結合手続き901を呼出す、そこから、メ
ソド404d〜408dをそれぞれのメソドの種類とと
もにメソド群保存変数1(902)に保存し、メソドに
409dを呼出す(905)、メソド409dはここで
唯一の本来のアラウンド・メソドであり、call−n
ext−method形式が評価されると(908かつ
909)第1制御メソド903を呼出すことになる。第
1制御メソド903では。
メソド404d〜408dをそれぞれのメソドの種類と
ともにリストアし、これらを引数として第2メソド結合
手続き801を呼出す(907)。
ともにリストアし、これらを引数として第2メソド結合
手続き801を呼出す(907)。
そこから、メソド407dを呼出しく802)、メソド
405dを呼出しく803)、メソド408dを呼出し
て(804)メソド405dの値を結合果として返す。
405dを呼出しく803)、メソド408dを呼出し
て(804)メソド405dの値を結合果として返す。
ここで型が再定義された場合の動作例を示す。
上記の総称関数m2で用いているc2型の定義を、de
fclass式422で上位型なしとして再定義したと
する。すると、バージョンIDを従来のc2型最新バー
ジJン1612での値1 (1633)を2に更新した
型識別子1802を生成し、C型の最新バージョンとし
て設定する(1801)。
fclass式422で上位型なしとして再定義したと
する。すると、バージョンIDを従来のc2型最新バー
ジJン1612での値1 (1633)を2に更新した
型識別子1802を生成し、C型の最新バージョンとし
て設定する(1801)。
ここで、c2型のデータと02型のデータを引数として
総称関数m2が呼出される(形式417)と、第17図
におけるメソド結合対応表1601より値1604bが
検索されるが、キー部の型識別子のバージョンID16
33が02型の最新のバージョンl01803と一致し
ないので、改めて値を計算しキーの型識別子を変更して
値を登録することになる(1207.1212)、cl
型を上位型としないならば適用可能なメソドは、プライ
マリ・メソド406dおよびアラウンド・メソド409
dということになり、第18図(b)値1604cのよ
うに変更される。ただし、ここでは第−層のキーより不
一致であるので、このキーの下層の他の値である値16
03aも同様に再計算、再登録することとする(値16
03b)。
総称関数m2が呼出される(形式417)と、第17図
におけるメソド結合対応表1601より値1604bが
検索されるが、キー部の型識別子のバージョンID16
33が02型の最新のバージョンl01803と一致し
ないので、改めて値を計算しキーの型識別子を変更して
値を登録することになる(1207.1212)、cl
型を上位型としないならば適用可能なメソドは、プライ
マリ・メソド406dおよびアラウンド・メソド409
dということになり、第18図(b)値1604cのよ
うに変更される。ただし、ここでは第−層のキーより不
一致であるので、このキーの下層の他の値である値16
03aも同様に再計算、再登録することとする(値16
03b)。
短形式宣言メソド結合の場合について言えば、総称関数
の定義、メソドの追加および型の再定義の動作は上記の
標準メソド結合の場合は同様である。以下に総称関数が
呼出された場合の動作について述べる。第4図の01お
よびc2型の定義のもとで第5図の形式501〜505
が評価され、そのうえで総称関数m3がcl型の引数で
呼出され(形式511)またc2型の引数で呼出される
(形式512)と、第19図のメソド結合対応表190
1が生成されることになる。ここで、cl型の引数によ
り呼出される(形式513)と、値1902が検索され
関数水(乗算)をオペレータとしメソド503dをプラ
イマリ・メソド群として第4メソド結合手続き1001
を呼出し、そこからメソド503dを呼出しく1002
)、その値を引数として関数:を呼出すことになる。ま
た、c2型の引数により呼出される(形式514)と、
値1903を検索し、関数水をオペレータとしてメソド
504dをプライマリ・メソド群としおよび第2制御メ
ソド1103をアラウンド・メソド群として第5メソド
結合手続き1101を呼出す。
の定義、メソドの追加および型の再定義の動作は上記の
標準メソド結合の場合は同様である。以下に総称関数が
呼出された場合の動作について述べる。第4図の01お
よびc2型の定義のもとで第5図の形式501〜505
が評価され、そのうえで総称関数m3がcl型の引数で
呼出され(形式511)またc2型の引数で呼出される
(形式512)と、第19図のメソド結合対応表190
1が生成されることになる。ここで、cl型の引数によ
り呼出される(形式513)と、値1902が検索され
関数水(乗算)をオペレータとしメソド503dをプラ
イマリ・メソド群として第4メソド結合手続き1001
を呼出し、そこからメソド503dを呼出しく1002
)、その値を引数として関数:を呼出すことになる。ま
た、c2型の引数により呼出される(形式514)と、
値1903を検索し、関数水をオペレータとしてメソド
504dをプライマリ・メソド群としおよび第2制御メ
ソド1103をアラウンド・メソド群として第5メソド
結合手続き1101を呼出す。
そこから、関数水とメソド504dをメソド群保存変数
2(1102)に保存しメソド505dを呼出す。ここ
でメソド505dは唯一の本来のアラウンド・メソドで
あり、call−next−methodが評価される
(1106かつ1107)と第2制御メソド1103が
呼出されることになる。第2制御メソド1103では、
関数水およびメソド504dをリストアしこれらを引数
として第4メソド結合手続きを呼出しく1109)、そ
こからメソド504dを呼出しく1002)その値を引
数として関数*を呼出す(1003)ことになる。
2(1102)に保存しメソド505dを呼出す。ここ
でメソド505dは唯一の本来のアラウンド・メソドで
あり、call−next−methodが評価される
(1106かつ1107)と第2制御メソド1103が
呼出されることになる。第2制御メソド1103では、
関数水およびメソド504dをリストアしこれらを引数
として第4メソド結合手続きを呼出しく1109)、そ
こからメソド504dを呼出しく1002)その値を引
数として関数*を呼出す(1003)ことになる。
本実施例によれば以下の効果がある。第一に引数が複数
である総称関数についても高速に処理可能である。第二
にプログラムの変更に対して高速に対応可能であること
で、これは以下の3項目に分けて述べられる。その1は
新しい型を定義する場合にメソド結合対応表を生成する
必要がない。
である総称関数についても高速に処理可能である。第二
にプログラムの変更に対して高速に対応可能であること
で、これは以下の3項目に分けて述べられる。その1は
新しい型を定義する場合にメソド結合対応表を生成する
必要がない。
その2は型を再定義する場合に当該の型や下位の型のメ
ソド結合対応表を作る直す必要がない、その3はメソド
を追加する場合に当該の総称関数のメソド結合対応表以
外のメソド結合対応表を更新する必要がなく、かつメソ
ド結合対応表の値の更新において、メソド結合手続きを
生成する必要がないことである。上記3項目が可能にな
った反面、総称関数呼出し時においてメソド結合対応表
に当該の型のキーがない場合および古い型定義のもとで
の値である場合には値の計算が必要となるが、あらかじ
め用意したいくつかのメソド結合手続きより選んで登録
すればよいので負荷は少ない。
ソド結合対応表を作る直す必要がない、その3はメソド
を追加する場合に当該の総称関数のメソド結合対応表以
外のメソド結合対応表を更新する必要がなく、かつメソ
ド結合対応表の値の更新において、メソド結合手続きを
生成する必要がないことである。上記3項目が可能にな
った反面、総称関数呼出し時においてメソド結合対応表
に当該の型のキーがない場合および古い型定義のもとで
の値である場合には値の計算が必要となるが、あらかじ
め用意したいくつかのメソド結合手続きより選んで登録
すればよいので負荷は少ない。
本発明によれば、以下の効果がある。
第1点は、総称関数毎に複数の型識別子をキーとするメ
ソド結合対応表を設けたので、複数の引数型を用いてメ
ソドを選択しメソド結台形を決定する総称関数を扱うこ
とが可能となったことである。また、新しい型の定義所
にメソド結合対応表の値を一斉に計算する負荷を省き、
メソドの追加時のメソド結合対応表の更新も当該の総称
関数のメソド結合対応表のみで済ますことができる。さ
らにキーを木構造としたので、引数の型の組合せ数が大
きくなるような場合でも高速に検索することができる。
ソド結合対応表を設けたので、複数の引数型を用いてメ
ソドを選択しメソド結台形を決定する総称関数を扱うこ
とが可能となったことである。また、新しい型の定義所
にメソド結合対応表の値を一斉に計算する負荷を省き、
メソドの追加時のメソド結合対応表の更新も当該の総称
関数のメソド結合対応表のみで済ますことができる。さ
らにキーを木構造としたので、引数の型の組合せ数が大
きくなるような場合でも高速に検索することができる。
第2点は、上記型識別子に型定義のバージョン情報を持
たせたので、値の参照時にバージョンの一致を判定する
ことが可能であり、これにより型の再定義時に当該の型
や下位の型のメソド結合対応表を一斉に更新する必要が
なくなり、参照された値のみ遅延型で更新すればいいこ
とになったことである。
たせたので、値の参照時にバージョンの一致を判定する
ことが可能であり、これにより型の再定義時に当該の型
や下位の型のメソド結合対応表を一斉に更新する必要が
なくなり、参照された値のみ遅延型で更新すればいいこ
とになったことである。
第3点は、メソド結合対応表の鎖部を制御部とデータ部
に分けて構成したので、メソドの追加による鎖部の更新
が多くの場合データ部の更新のみで済むようになったこ
とである。
に分けて構成したので、メソドの追加による鎖部の更新
が多くの場合データ部の更新のみで済むようになったこ
とである。
第4点は、第2メソド結合手続きを上記制御部に用いた
ので、標準メソド結合でアラウンド・メソドがない範囲
でのメソド追加がデータ部の更新のみで済むようになっ
たことである。
ので、標準メソド結合でアラウンド・メソドがない範囲
でのメソド追加がデータ部の更新のみで済むようになっ
たことである。
第5点は、第3メソド結合手続きを上記制御部に、第1
制御メソドを上記データ部に用いたので、標準メソド結
合でアラウンド・メソドも含む範囲でのメソド追加がデ
ータ部の更新のみで済むようになったことである。
制御メソドを上記データ部に用いたので、標準メソド結
合でアラウンド・メソドも含む範囲でのメソド追加がデ
ータ部の更新のみで済むようになったことである。
第6点は、第4メソド結合手続きを上記制御部に用いた
ので、組込みメソド結合または短形式宣言メソド結合で
アラウンド・メソドがない範囲でのメソド追加がデータ
部の更新のみで済むようになったことである。
ので、組込みメソド結合または短形式宣言メソド結合で
アラウンド・メソドがない範囲でのメソド追加がデータ
部の更新のみで済むようになったことである。
第7点は、第5メソド結合手続きを上記制御部に、第2
制御メソドを上記データ部に用いたので、組込みメソド
結合または短形式宣言メソド結合でアラウンド・メソド
も含む範囲でのメソド追加がデータ部の更新のみで済む
ようになったことである。
制御メソドを上記データ部に用いたので、組込みメソド
結合または短形式宣言メソド結合でアラウンド・メソド
も含む範囲でのメソド追加がデータ部の更新のみで済む
ようになったことである。
第1図は本発明の一実施例の総称関数処理方式を示して
いる。第2図は本発明の技術の背景である総称関数のプ
ログラムを示したものであり、第3図は[関数プログラ
ムの動作の説明図である。 +ilj”べ 第4図は総称関数の機能のうち特に標準メソド結合タイ
プを用いた場合のプログラム例であり、第5図は短形式
宣言型メソド結合タイプを用いた場合のプログラム例で
ある。第6図は、第1図の総称関数処理方式で用いるメ
ソド結合対応表の鎖部の形式を示している。第7図〜第
11図は、第6図の鎖部形式(第1値部形弐〜第5値部
形式)の制御部で用いる第1メソド結合手続き〜第5メ
ソド結合手続きの処理フローを示している。第12図は
、第1図の総称関数処理方式で用いる総称関数呼出し制
御プログラムの処理フローを示している。第13図〜第
15図は、第1図の総称関数処理方式で用いる定義変更
制御プログラムの構成要素である型定義および再定義プ
ログラム、総称関数定義プログラムおよびメソド定義プ
ログラムのそれぞれ処理フローを示している。 第16図〜第19図は、第1図の総称関数処理方式によ
る動作例を示したものである。このうち、第16図は、
第4図のプログラム例を入力とした場合に生成されるメ
ソド結合対応表を示している。 第17図は、第16図の続きで、新しいキーの値が追加
登録された図である。第18図は、第17図の続きで、
データ型が再定義された後に新定義に基づく値が登録さ
れた図である。第19図は、第5図のプログラム例を入
力とした場合に生成されるメソド結合対応表を示してい
る。 第20図は、第1図の総称関数処理方式で用いる定義変
更制御プログラムの構成を示している。 第21図は、第1図の総称関数処理方式で用いるデータ
と型識別子に関する補足説明図である。 符号の説明 105・・・メソド結合対応表、 106・・・型識別子、110・・・バージミンID1
08・・・鎖部、 112・・・制御部、113・・・データ部、801・
・・第2メソド結合手続き、 901・・・第3メソド結合手続き、 903・・・第1制御メソド、 1001・・・第4メソド結合手続き、103・・・第
2制御メソド。 第 図 竿 4 図 (CIiJ、/σ (dIL子c1九汀 1 Cl (ン (Ol) ぬSけiP伽−σJ、−ct ) 、−(≦Lシ?cトjrすンoh−o+−0z)rν+
07 Zθ2 Cltfclass 2 す tksc)−’tPす;cpq−of−CI−2)
へ 1l−x2(7It2 <c’lテ゛−タ〉 〈c2!チータン\ン −φt7 穿 困 (耐INL−πa4kIMl−cowr/ytへ久fi
oル片 ) ヘケof 興 図 葛 7 図 第 ? 図 第 図 筈 0 図 箒 // 図 ネ/乙図 易/?図 (0L) わ2/図
いる。第2図は本発明の技術の背景である総称関数のプ
ログラムを示したものであり、第3図は[関数プログラ
ムの動作の説明図である。 +ilj”べ 第4図は総称関数の機能のうち特に標準メソド結合タイ
プを用いた場合のプログラム例であり、第5図は短形式
宣言型メソド結合タイプを用いた場合のプログラム例で
ある。第6図は、第1図の総称関数処理方式で用いるメ
ソド結合対応表の鎖部の形式を示している。第7図〜第
11図は、第6図の鎖部形式(第1値部形弐〜第5値部
形式)の制御部で用いる第1メソド結合手続き〜第5メ
ソド結合手続きの処理フローを示している。第12図は
、第1図の総称関数処理方式で用いる総称関数呼出し制
御プログラムの処理フローを示している。第13図〜第
15図は、第1図の総称関数処理方式で用いる定義変更
制御プログラムの構成要素である型定義および再定義プ
ログラム、総称関数定義プログラムおよびメソド定義プ
ログラムのそれぞれ処理フローを示している。 第16図〜第19図は、第1図の総称関数処理方式によ
る動作例を示したものである。このうち、第16図は、
第4図のプログラム例を入力とした場合に生成されるメ
ソド結合対応表を示している。 第17図は、第16図の続きで、新しいキーの値が追加
登録された図である。第18図は、第17図の続きで、
データ型が再定義された後に新定義に基づく値が登録さ
れた図である。第19図は、第5図のプログラム例を入
力とした場合に生成されるメソド結合対応表を示してい
る。 第20図は、第1図の総称関数処理方式で用いる定義変
更制御プログラムの構成を示している。 第21図は、第1図の総称関数処理方式で用いるデータ
と型識別子に関する補足説明図である。 符号の説明 105・・・メソド結合対応表、 106・・・型識別子、110・・・バージミンID1
08・・・鎖部、 112・・・制御部、113・・・データ部、801・
・・第2メソド結合手続き、 901・・・第3メソド結合手続き、 903・・・第1制御メソド、 1001・・・第4メソド結合手続き、103・・・第
2制御メソド。 第 図 竿 4 図 (CIiJ、/σ (dIL子c1九汀 1 Cl (ン (Ol) ぬSけiP伽−σJ、−ct ) 、−(≦Lシ?cトjrすンoh−o+−0z)rν+
07 Zθ2 Cltfclass 2 す tksc)−’tPす;cpq−of−CI−2)
へ 1l−x2(7It2 <c’lテ゛−タ〉 〈c2!チータン\ン −φt7 穿 困 (耐INL−πa4kIMl−cowr/ytへ久fi
oル片 ) ヘケof 興 図 葛 7 図 第 ? 図 第 図 筈 0 図 箒 // 図 ネ/乙図 易/?図 (0L) わ2/図
Claims (1)
- 【特許請求の範囲】 1、データ型の定義を格納した型識別子群と、単数また
は複数の型識別子とその引数が与えられた場合に適用す
べきメソドまたはメソド結合形の組を格納したメソド結
合対応表を有する総称関数群と、総称関数呼出し時には
上記メソド結合対応表より引数のデータ型に対するメソ
ドまたはメソド結合形を検索して実行する総称関数呼出
し制御部と、型や総称関数の定義および変更を実行する
定義変更制御部よりなる総称関数型言語の関数処理方法
において、上記メソド結合対応表のキー部を、第1の引
数の型識別子を第1層のキーとし、第2の引数の型識別
子を第2層のキー部を配置し、以下引数毎に枝分かれす
るような木構造としたことを特徴とする関数処理方法。 2、特許請求の範囲第1項記載のメソド結合対応表にお
いて、キー部の型識別子に型定義のバージョン情報を持
たせ、メソド結合対応表参照時には、引数の型のバージ
ョン情報と上記キー部のバージヨン情報を照合すること
を特徴とする関数処理方法。 3、特許請求の範囲第1項記載のメソド結合対応表にお
いて、メソド結合形をメソド結合制御の実行手続きであ
る制御部と上記手続きに渡す引数であるデータ部に分け
て構成したことを特徴とする関数処理方法。 4、標準メソド結合でアラウンドメソドを含まない総称
関数では、特許請求の範囲第3項記載のメソド結合形を
、適用可能なビフォー・メソド群、プライマリ・メソド
群およびアフター・メソド群をデータ部とし、ビフォー
・メソド群、最も下位の型指定のプライマリ・メソドお
よびアフター・メソド群を順次呼出す手続きである第2
メソド結合手続きを制御部とすることを特徴とする関数
処理方法法。 5、標準メソド結合でアラウンド・メソドを含む総称関
数では、特許請求の範囲第3項記載のメソド結合形を、
適用可能なアラウンド・メソド群、ビフォー・メソド群
、プライマリ・メソド群およびアフター・メソド群をデ
ータ部とし、上記アラウンド・メソド群には最も上位の
型指定のメソドとして、上記ビフォー・メソド群、プラ
イマリ・メソド群およびアフター・メソド群を引数とし
て特許請求の範囲第4項記載の第2メソド結合手続きを
呼出すメソドを付加しておき、最も下位の型指定のアラ
ウンド・メソドを呼出す手続きを制御とすることを特徴
とする関数処理方法。 6、組込みメソド結合または短形式宣言メソド結合でア
ラウンド・メソドを含まない総称関数では、特許請求の
範囲第3項記載のメソド結合形を、当該メソド結合のオ
ペレータおよび適用可能なプライマリ・メソド群をデー
タ部とし、上記プライマリ・メソド群を順次呼出してそ
の値群を引数として上記オペレータを呼出す手続きであ
る第4メソド結合手続きを制御部とすることを特徴とす
る関数処理方法。 7、組込みメソド結合または短形式宣言メソド結合でア
ラウンド・メソドを含む総称関数では、特許請求の範囲
第3項記載のメソド結合形を、当該メソド結合のオペレ
ータ、適用不能なプライマリ・メソド群およびアラウン
ド・メソド群をデータ部とし、上記アラウンド・メソド
群には、最も上位の型指定のメソドとして当該メソド結
合のオペレータと適用可能なプライマリ・メソド群を引
数として特許請求の範囲第6項記載の第4メソド結合手
続きを呼出すメソドを付加しておき、最も下位の型指定
のアラウンド・メソドを呼出す手続きを制御部とする関
数処理方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1152338A JP3047976B2 (ja) | 1989-06-16 | 1989-06-16 | 関数処理方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1152338A JP3047976B2 (ja) | 1989-06-16 | 1989-06-16 | 関数処理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0319032A true JPH0319032A (ja) | 1991-01-28 |
| JP3047976B2 JP3047976B2 (ja) | 2000-06-05 |
Family
ID=15538356
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1152338A Expired - Fee Related JP3047976B2 (ja) | 1989-06-16 | 1989-06-16 | 関数処理方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3047976B2 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH1040090A (ja) * | 1996-07-02 | 1998-02-13 | Internatl Business Mach Corp <Ibm> | プログラム開発支援システム及び支援方法、プログラム開発支援のために用いられるプログラム部品を格納する記憶媒体 |
-
1989
- 1989-06-16 JP JP1152338A patent/JP3047976B2/ja not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH1040090A (ja) * | 1996-07-02 | 1998-02-13 | Internatl Business Mach Corp <Ibm> | プログラム開発支援システム及び支援方法、プログラム開発支援のために用いられるプログラム部品を格納する記憶媒体 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3047976B2 (ja) | 2000-06-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7844948B2 (en) | Maintaining multiple valid concurrent serialized object versions | |
| US7207002B2 (en) | Serialization and preservation of objects | |
| US6766518B1 (en) | Establishing relationships between objects based on object interfaces | |
| KR0136765B1 (ko) | 대상물형태 유출 및 대상물형태 속성값 취득방법 및 장치 | |
| Von Oheimb | Hoare logic for Java in Isabelle/HOL | |
| US6169993B1 (en) | Method, data structure, and computer program product for object state storage | |
| US20060095483A1 (en) | Modified computer architecture with finalization of objects | |
| JPH02272627A (ja) | デイジタル・コンピユータ・システムとその手続呼び出し方法 | |
| Veltri et al. | Formalizing 𝜋-calculus in guarded cubical Agda | |
| JPH09269898A (ja) | 実行可能ファイルの実行効率を改善するための方法及びシステム | |
| JP2002508565A (ja) | システム呼出しの変換方法 | |
| US6347318B1 (en) | Method, system, and apparatus to improve performance of tree-based data structures in computer programs | |
| Guttman et al. | The VLISP verified scheme system | |
| Meredith et al. | An executable rewriting logic semantics of K-Scheme | |
| JPH0319032A (ja) | 関数処理方法 | |
| US7849470B2 (en) | System and method for extending a programming language to include multiple dissimilar object systems | |
| Setzer | Java as a functional programming language | |
| JP2000122876A (ja) | 情報処理装置 | |
| CN115888114A (zh) | 游戏数据的处理方法及装置、存储介质、终端 | |
| US6792600B1 (en) | Method and apparatus for just in time compilation of instructions | |
| Minkowitz et al. | A C++ library for implementing specifications | |
| Curtis | The Scheme of Things | |
| US7627859B2 (en) | Method for configuring non-script language library files to be run as scripts | |
| Zamulin | Algebraic modelling of imperative languages with pointers | |
| Umatani | Lightweight DSL for Describing Extensible Transition Systems |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |