Hatena::ブログ(Diary)

 | 

2009-07-26

piForth をチューリング完全にする試み

なんだか最近 piForth がチューリング完全でないというのが気に入らないので、出来る限り怠けつつもチューリング完全にする方法は無いかと考えてみた。

前提は、

  • Forth なので出来る限り例外の無い純粋な逆ポーランド記法にしたい。当然分岐なども対象。
  • ワードくらいは何故か実装できてしまったので例外として許す。

の2つである。

すると、分岐はこの時点で、

expr-a expr-b cond if

というような形式しかありえない事となる。

んでまあ色々考えてみたのだけど、ワードをスタックに積めれば全て上手く解決できるという結論に逹した。Scheme の'的な物で本来命令として解釈されてしまうワードをそのままデータとして扱えるようにすれば良さそう。

すると上記のifを使って、

if(cond){
    operation_a();
}
else{
    operation_b();
}

というような疑似コードが、

'operation-a 'operation-b cond if call

というコードで実現できる事になる。

あとは、再帰できればチューリング完全になって、ついでに無名関数ならぬ無名ワードとかが作れれば書きやすさも向上して良いのではないかと思う。

はてなカウンターが動いていないなと思っていたんだけど

アクセス解析ができる有料カウンターを設置する(counterモジュール) - はてなダイアリーのヘルプに設定方法が書いてあった、どうせ両方はてなが提供しているサービスなのだし設定無しで動くようにしてしまった方が良いのではないか。

 |