問題タブ [language-implementation]

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 に答える
1549 参照

embedded - Osek 実装言語

OIL ファイルには、必ず「Implementation.oil」というファイルが含まれています。このファイルの機能を説明するものは何も見つかりません! 彼女は一例です: `

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

javascript - 文字列を指定しない場合、Angular はどのように注入するかを知ることができますか?

次のコードを検討してください。

JS が縮小されているときの注入の問題を回避するには、依存性注入の配列形式を使用する必要があることを知っています。

しかし、Angular は最初のケース (非配列) で何を注入するかをどのように知るのでしょうか? .controller('MainCtrl', function (scop)の代わりに使用するとどうなり$scopeますか? JS を解析して、そのプロバイダーの一部と一致する関数パラメーター名を探しますか?

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

c# - 別の DynamicExpression のフォールバック内に DynamicExpression を作成しても安全ですか?

これについては、タイトルはかなり自明です。

明確にするために: 私は動的な式を使用してかなり完全な言語インフラストラクチャを構築し、アセンブリを出力してみるのはクールだろうと考えました。これを行った経験のある人なら誰でも、「LambdaExpression.CompileToMethod」では動的式を CallSite<> に変換し、式が後でアクセスできるプライベート フィールドに割り当てる必要があることを知っています。

私はいくつかのテスト プロジェクトでこれを行うことに成功しましたが、すべて (つまりすべて) のコードをリファクタリングする前に、フォールバック プロセス中に作成されたバインダー インスタンスに対して同じことを行う必要があるかどうかを知る必要があります。

また、「Expression.Constant」を使用すると、メソッドにコンパイルするときに制限があります。その制限はバインダー内にも存在しますか、それとも「ランタイム」および「安全」と見なされますか。

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

haskell - G マシン、(非) 厳密なコンテキスト - ケース式に特別な処理が必要な理由

私は現在、実装機能言語: SPJ によるチュートリアルを読んでおり、この質問で参照する (サブ) 章は 3.8.7 (136 ページ) です。

最初の注意点は、チュートリアルを読んでいる読者は、ECase 式の C スキームのコンパイル (つまり、厳密ではないコンテキストに現れる式) をまだ実装していないということです。
提案された解決策は、ECase 式が非厳密なコンテキストに表示されないように Core プログラムを変換することです。具体的には、そのような出現ごとに、本体が元の ECase 式に対応する正確に 1 つの変数を持つ新しいスーパーコンビネーターが作成され、出現自体がそのスーパーコンビネーターの呼び出しに置き換えられます。以下に、 1
からのそのような変換の (少し変更された) 例を示します。

このソリューションを実装しましたが、魅力的に機能します。つまり、出力はPack{2,2} 2 Pack{1,0}.
しかし、私が理解できないのは、なぜそんなに面倒なのかということです。私だけではないことを願っていますが、問題を解決するために最初に考えたのは、C スキームで ECase 式のコンパイルを実装することでした。そして、Eスキームのコンパイルのルールを模倣してそれを行いました(134ページですが、完全を期すためにここでそのルールを提示します):したがって、使用しました

と書いた

Eスキームとは対照的に、Weak Head Normal Form(WHNF)のスタックの一番上に引数が必要であり、Cスキームはそれを保証しない[Eval]ため、追加しました。Casejump

しかし、その後、出力は enigmatic: に変わりますPack{2,2} 2 6
Eスキームと同じルールを使用する場合、同じことが当てはまります。

したがって、私の「明白な」解決策は本質的に間違っていると思います-そして、出力からそれを見ることができます。しかし、なぜそのアプローチが失敗するにちがいないのかについて、正式な議論を述べるのに苦労しています。
単純なアプローチが機能しない理由について、誰かがそのような議論/証拠またはいくつかの直感を私に提供できますか?

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

c++ - スタックはどこに実装されていますか?

C++ では、プログラマーは、スタック割り当てメモリまたはヒープ上の動的メモリのいずれかを使用できます。スタックがどのように動作するかについてはかなり明確です (C++ の演習としてスタックを作成しました) が、「スタック」がどのように、どこで定義されているかについてはまだ興味があります。

「スタック」は言語の機能ですか、OSの機能ですか、それともハードウェアの機能ですか? オペレーティング システムの観点から見ると、各スタックは多くのアクティブなスレッド プロセスのそれぞれに関連するものであるという漠然とした考えがあります。これは、CPUやマザーボードのハードウェア機能ではなく、ソフトウェアレベルで実装されていることを示唆しています。

C++ の場合、コンパイラは各バイナリにスタックの実装を挿入した可能性があると思います。それとも、OS が独自のスタック実装を実行中の各プロセスに適用するのでしょうか? これはどのように定義されましたか?

ここで同様の質問を見つけましたが、回答が得られていないため、質問をより直接的に再度述べたいと考えています。