問題タブ [gforth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2936 参照

lisp - Common Lisp マクロと Forth メタプログラミング機能の比較

すべての Common Lisp プログラマーは、マクロが強力なツールであることを知っています。Common Lisp マクロは、とりわけ、言語仕様を変更せずに Lisp の上にオブジェクト指向を追加するために使用されてきました。read-macros は、マインド ベンディング機能を備えた別の構成要素です。

メタプログラミングを可能にする別のプログラムは Forth です。Forth は、'words' と 'generate words' を使用して、少し異なる方法でそれを行います。

両方の言語に手を出した人から、一般的な Lisp マクロと forth 構造が幅/力で匹敵するかどうかを知りたいです:前者でできて後者ではできないことはありますか? それともその逆?

もちろん、私は 2 つの言語のチューリング完全性について話しているのではありません。メタプログラミング機能について話しているのです。C はチューリング完全ですが、C マクロの能力が Common Lisp マクロに匹敵すると言うのは愚か者だけです。

0 投票する
1 に答える
347 参照

class - Forth で基本クラスとそのクラスのインスタンスを作成するにはどうすればよいですか?

入力電圧などの電気的測定値を表すオブジェクトを作成したいと思います。これを行うには、さまざまな種類の読み取り値 (たとえば、電流と電圧) を処理するための基本的なクラス構造を作成したいと考えています。

私がやりたいことの疑似コード(まあ、実際にはPython)はこれです:

Gforthoof.fs拡張子を使用しています。

0 投票する
1 に答える
206 参照

forth - 新しい Forth ワードがコンパイルされる場所を制御するにはどうすればよいですか?

何を指すかを変更する方法HERE、またはコンパイルする次の定義が特別な場所にあることを確認する他の方法はありますか? または、作成した定義を別の場所にコピーできますか? 理想的には、ANS Forth でのソリューションが必要ですが、Gforth 固有のもので十分です。

0 投票する
1 に答える
160 参照

forth - ループからの例外のキャッチ

スタック上のすべてのアイテムをドロップする Forth ワードを書き込もうとしています。「ドロップ」で無限ループを実行し、スタックが空であるために「ドロップ」が失敗したときにエラーをキャッチするという、かなりばかげた方法を使用しています。

私の言葉は次のように定義されています。

droploop を実行すると、予想どおりのエラーが発生し、実行後にスタックが空になります。dropcatcher を実行すると、スタックが空でない場合はドロップし、スタックが空の場合は何も報告しません。dropall を実行すると、あらゆる種類のものがスタックに残ります。

次のようになります。

2 3 4 5 6 7 8 9 10 dropall .s <9> -1 3 -1 5 -1 7 -1 9 -1 OK

droploop と dropcatcher はそれ自体で正しく動作しているように見えるため、dropall は問題なくスタックを単純にクリアすると思いますが、残念ながら、dropall が動作しない理由がわかりません。

dropall の動作が droploop や dropcatcher と異なるように見えるのはなぜですか? または、私はここで間違っていますか?

0 投票する
1 に答える
383 参照

forth - Gforth で浮動小数点の答えが得られないのはなぜですか?

演算子の前に F を付け、最後に (.) を付けるだけで、浮動小数点数を計算して表示できると聞きました。しかし、それは私にこの答えを与えました:

どうすれば入手でき0.66666667 okますか?

0 投票する
2 に答える
361 参照

forth - 2>r と 2r> はどのように機能しますか?

最近、comp.lang.forthで、Coos Haak によって親切に書かれたコードを見つけましたが、理解が困難です。

括弧の間の数字を合計または乗算することになっています。例えば、

便宜上、ここに再現します。

r> 2>rとというフレーズが見えます2r> rdrop 2>r。しかし、私は彼らが何をしているのかについてかなり混乱しています。左括弧のスタックの深さが、何らかの形で戻りスタックに隠されていると思います。しかし、私はそれを理解していません。

これらは戻りスタックに何をしますか?

Gforth のドキュメントには次のように記載されています。

これは、w と d の間の変換と関係がありますか?