gotoをつかったSCBM方式はまずまず動作するところまでいったものの、
環境の問題でなかなかうまくいきません。成功継続を巧みにつかってクロージャと
同様なものを作ろうを試みたものの、複雑すぎて機能しません。
方針を転換することにしました。gotoではあまりにもやること、考えることが多すぎるのです。
高速SLDマシン
N-Prologはもともと素朴なSLDリゾルーションに基づいていました。
しかしリスト構造をベースにした素朴な実装だったので思うように速度を出すことができませんでした。
そこでgotoを使ってC言語でゴリゴリとやったものの環境の持ち運びで頓挫しました。
今回はこの原型であるSLD方式をゴリゴリとCで極限はで高速化しようという発想に切り替えます。
これだと苦労した局所環境、クロージャの問題は回避できます。
証明木を配列に置き換え、述語を述語アトムと引数ポインタの2つを保持する構造体にし、
構造体配列により証明木を構成することを構想しています。証明木は配列の右側からスタートすることにより
伸縮させてやろうと思っています。
宇宙戦艦ヤマトになぞらえて
宇宙戦艦ヤマトは第二次世界大戦で沈んだ戦艦大和を
隠れ蓑にして建造されました。外骨格は古風な戦艦です。
今回の計画においても基本原理はPrologの基本であるSLDにその基盤をおく
ものの、C言語の利点をめいっぱい活かしてSCBM抽象マシンにしたいと構想しています。
いままでの取り組みでかなり奥深いところまでPrologの内部構造について探求しました。
これをいかしてSCBM-Prologの大改装計画をスタートします。