著者
山崎 憲一 吉田 雅治 天海良治 竹内 郁雄
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.41, no.1, pp.136-147, 2000-01-15
被引用文献数
1

TAOは,関数型,論理型,オブジェクト指向のプログラミング機能を持つマルチパラダイム言語である.TAOの論理型計算は次の2つの特徴を持つ.パターンマッチとガードによって節を選択し,深いバックトラックは陽に呼び出す.関数と述語は互い呼び出すことができ,任意のデータを渡せる.本論文では,このような論理型計算機構を実装するための抽象マシンを提案する.この抽象マシンは,WAMをベースとしており,以下のような特徴を持つ.1)構造データをスタックでなくヒープ上に表現する.2)単一化やパターンマッチでは,レジスタを極力使用しない.3)プロセススイッチする可能性がある時点では,データを必ず無矛盾に保つ.また,他のProlog処理系と比較評価し,Lispとの融合によって性能が劣化しないことを示す.TAO is a Lisp-based multi-paradigm programming language whichincorporates functional, logic and object-oriented programmingparadigms. This paper describes the implementation of logic computation in TAO, which is different from Prolog in thefollowing two points.A clause is selected according to pattern matching and guard testing,and deep backtracking is invoked explicitly.Functions and predicates can invoke each other and pass any type ofdata between them.We propose an abstract machine, based on WAM (Warren's abstract machine), which has the following features.1) Structured data are represented in heap memory instead of stack.2) Almost no extra registers are used at unification and pattern maching.3) Memory configuration is consistent at any potential process-switching point.We also evaluated our implementation comparing with other Prologprocessors, and showed that the paradigm fusion does not degrade theperformance.
著者
山崎 憲一 吉田 雅治 天海良治 竹内 郁雄
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.43, no.1, pp.112-123, 2002-01-15

本論文では,Lispでオブジェクト指向プログラミングを行うための,Lispの拡張について述べる.本論文で提案する言語TAOは,ポリシーとメカニズムを分離するという考えに基づいて設計されており,たとえば,クラスや継承といったポリシーは提供しない.TAOは,オブジェクト指向計算のための最小限のメカニズムと,ポリシーを構築するためのメカニズムだけを備える.メカニズムは,Lispの環境とラムダ式を自然に拡張することにより導入される.ユーザは,これらを用いてTAO上にさまざまなポリシーを構築できる.本論文では,一例として,単純継承と委譲の構築例を示す.また,実装についても述べ,評価を行い,TAOの提供するメカニズムがいずれも十分な性能を達成していることを示す.This paper describes an extension of Lisp to incorporateobject-oriented programming into Lisp.A symbolic processing languageTAO, proposed in this paper, is designed based on policy/mechanismseparation principle where mechanisms support essential primitives forobject-oriented computation and policies, such as class definition andinheritance, determines how mechanisms are managed.The mechanisms areintroduced naturally by extending the Lisp's concept of environmentand lambda expression.By using these mechanisms, a TAO user canconstruct his/her own policy, such as single inheritance and simpledelegation which are shown in this paper as an example.We describe theimplementation of TAO and evaluate it using some benchmark programs,and as a result, we show that these primitives are efficient enough.