問題タブ [concatenative-language]

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 投票する
7 に答える
3990 参照

programming-languages - 私が8歳のように、連結言語を説明してください

連結言語に関するウィキペディアの記事を読みましたが、始めたときよりも混乱しています。:-)

愚かな人々の用語での連結言語とは何ですか?

0 投票する
8 に答える
2651 参照

forth - 連結型プログラミング言語の実際の使用法

ForthFactorJoyなどの連結言語で行われている実際のプロジェクトは何ですか?

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

lambda - コンビネータ/ポイントフリープログラミング言語におけるコンビネータの役割

高階コンビネータ(または関数プロデューサー)は、連結および暗黙のプログラミングでどのような正確な役割を果たしますか?

スタックを直接操作するのではなく、連結プログラミング言語を実装する別の方法はありますか?

言及されたコンビネータとSchonfinkelコンビネータ論理の間の関係はどのくらい緊密ですか?

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

java - Java の連結言語インタープリター

Java で連結言語インタープリターを見つけることに興味があります。理想的には、次の条件を満たす必要があります。

  • JVM用のバイトコードコンパイラだけでなく、インタープリタがあります。
  • 言語自体には、いくつかの例と「いつか残りを文書化します」という通知だけでなく、まともな文書があります。
  • プロジェクトは完全に放棄されたわけではありません。

要するに、Java に簡単に組み込むことができる、適度に「生きている」連結言語を探しています。

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

lisp - Factorプログラミング言語へのLispの影響?

FactorがLispの影響を受けていることを(Slava Pestovから)読んだことがありますが、どのように理解できるかわかりませんか?それらはプログラミング言語の違いではありませんか?

0 投票する
0 に答える
300 参照

postfix-notation - Applicative Language は Postfix Notation を使用できますか?

Factor のような後置言語は、前置言語 (Lispy 言語) や中置/後置言語 (演算子と関数の両方を含めれば、すべて C スタイルの言語) よりもはるかに読みやすいことが常にわかっています。

プレフィックス言語とは異なり、どこにでも区切り記号は必要ありません。中置記法とは異なり、覚えておくべき複雑な優先順位はありません。好きではないものは何ですか?

これらの言語はすべて連結しているように見えるため、ほぼ常にスタックベースです。

連結よりも適用可能であり、依然として後置ベースである現代的な言語を実装できますか?

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

haskell - Haskellの行多相:「変換」を使用したForthDSLの記述の問題

私は最近のHaskellブログアクティビティ1に触発されて、HaskellでForthのようなDSLを書いてみました。私が採用したアプローチは、同時に単純で紛らわしいものです。

簡単なことをするために、これは非常にうまく機能します:

単純な関数は、対応するスタック変換に簡単に変換できます。これまでのところ、遊んでみると楽しい結果が得られます。

これを高階関数で拡張しようとすると問題が発生します。

callは、フォームの「残り」に変換(スタックの先端に保持されている)を本質的に「適用」することにより、(s :> (s :~> s'))フォームのスタックをフォームに変換することになっています。s私はそれがこのように機能するはずだと思います:

しかし実際には、それは私に巨大な型の不一致エラーを与えます。私は何が間違っているのですか?「スタック変換」表現は高階関数を十分に処理できますか、それとも調整する必要がありますか?

1 N.B. これらの人がそれをした方法とは異なりstart push 1 push 2 add end、私はそれをしたいのですrunF $ start (push 1) (push 2) addが、おそらく後で私はいくつかの型クラスの魔法を使ってpush特定のリテラルの暗黙を作ることができるという考えです。

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

continuations - コールスタック?スタックを保持しますか?ネームスタック?

Factorマニュアルのこのページでは、継続で格納されるこれらのタイプのスタックについて説明しています。

  • データスタック
  • スタックを保持
  • コールスタック
  • namestack
  • キャッチスタック

これらのスタックは正確に何を保持しますか?私にとって最も紛らわしいのは、callstack、retainstack、namestackの3つです。

0 投票する
4 に答える
1296 参照

programming-languages - 連結言語は接頭辞表記を使用できますか?

連結言語には、さまざまなアリティの関数を作成できることや、関数の任意のセクションを除外できることなど、非常に興味深い特性がいくつかあります。ただし、多くの人は、後置記法を使用していることと、読みにくいことを理由に、それらを却下します。加えて、ポーランド人はおそらく、慎重に作成された表記法を逆に使用している人々を高く評価していません。

それで、接頭辞表記を持つことは可能ですか?もしそうなら、トレードオフは何でしょうか?

私はそれがどのように機能するかについての考えを持っていますが、私は連結言語の経験がないので、おそらく何かが欠けています。基本的に、関数は逆の順序で評価され、値は逆の順序でスタックからプルされます。これを示すために、接尾辞を接頭辞がどのようになるかと比較します。これは、従来の接尾辞表記を使用した連結式です。

式は左から右に評価されます。最初の例で5は、スタックにプッシュされ、スタックdupの最上位の値を複製してから、スタック*の最上位の2つの値を乗算します。関数は最初に最後の引数をスタックからプルします。2番目の例では、-が呼び出されると2、スタックの一番上にありますが、これが最後の引数です。

プレフィックス表記は次のようになります。

式は右から左に評価され、関数は最初にスタックから最初の引数をプルします。プレフィックスフィルタの例がその説明に非常に近く、アプリケーションスタイルに似ていることに注意してください。私が気付いた問題の1つは、物事を除外することはそれほど有用ではないかもしれないということです。たとえば、後置記法では、subtractTwo関数を作成するために2 -因数分解することができます。3 2 -プレフィックス表記では、subtractFromThree関数を作成するために因数分解することができますが- 3- 3 2これはあまり有用ではないようです。

明白な問題を除けば、おそらく接頭記法を使用する連結言語は、後置記法を嫌う人々に勝つ可能性があります。任意の洞察をいただければ幸いです。

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

concurrency - 連結言語と並行性 - 原理的に難しいことはありますか?

連結言語の並行性に主な問題はありますか、それとも単に欠けているだけですか?

それとも、何かが足りないのですか?

私の知る限り、現在、最も高度な連結言語は Factor であり、まだ複数のコアを使用しない協調スレッド システムしかありません。

おそらく、Factor の発明者である Slava Pestiv は、Google に夢中になりすぎて、マルチコア バージョンを作成する時間がなかっただけでしょう。

私が理解している限りでは、アクター モデルは連結言語に非常に適しているはずです。しかし、これはかなり難しい分野です。どのようなモデルがうまく機能するか考えていますか?