問題タブ [trampolines]

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

php - この (トランポリンのような) 構造には名前がありますか?

関数のアドバイスメソッドの組み合わせに似たシステムを作成する際に、スタックを吹き飛ばしたくないと思っていました。これには、ツリー トラバーサル (私の実装では)、条件付き再帰などが含まれます。再帰をループに変換するために使用できる数少ない方法の 1 つはトランポリンです。これを試してみたところ、たとえば実装する必要があることがわかりました。短絡ブール式の評価。要するに、トランポリンと継続の組み合わせを実装しました。現在、この構造が存在するかどうか、およびその名前が何であるかを調べようとしています-そのような既存の構造を見つけることができなかったからです。

私の実装 - 手動スタック処理によるバウンス評価:

バウンス クラス:

そして、例として、短絡 AND 実装 (つまり JavaScript 内first(args) && second(args))。$firstおよびもs を$second返す関数です。Bounce

これにより、一般的な再帰が可能になり、通常の関数呼び出しごとに約 3 つの関数呼び出しのオーバーヘッドが発生します (ただし、可変反復回数の一般的なケースでは、記述するのが非常に面倒であり、「遅延再帰」が必要です)。

そのような構造を見た人はいますか?

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

javascript - JavaScript でトランポリン - 再帰呼び出しで try/catch を処理する方法

Javascript で記述された再帰関数がありますが、過度の再帰が原因で RangeError が発生しています。したがって、トランポリンを使用してテールを最適化しました。これにより、関数呼び出しが while ループにラップされ、RangeError が取り除かれました。ただし、再帰関数内でスローされた例外を処理する必要があります (1 レベル戻って修正処理を行います)。トランポリンを使用しているときに、このような状況に対処する方法がわかりません。

私の元の再帰関数(説明のために簡略化):

トランポリンを使用して更新された再帰関数 (参照:関数型 JavaScript プログラミングにおける再帰の理解)

val更新されたコードでは、が負でなく、例外がスローされていない限り、RangeError を回避できます。しかし、val負になり例外がスローされると、直接トランポリン キャッチ ブロックに移動します。しかし、1 レベル上の process() の catch ブロックに戻る必要があります。

どうすればそれを達成できるか提案できますか?ご協力いただきありがとうございます!関連する投稿をいくつかチェックしましたが、必要な解決策がわかりません。

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

emacs - Emacs:sshリモートサーバーリポジトリでmagitステータスが失敗しました

ssh を使用してリモート サーバーに接続しています。サーバーには という git リポジトリがありますMRFLSSVM。ただし、実行するmagit-statusと:

マギットは私に頼むCreate repository in /ssh:qmServer:/home/Chang/qmCodeLab/MRFLSSVM/?

マジットにそのレポを認識させる方法はありますか? (既に /usr/local/git に git 2.10.0 をインストールし、システム (CentOS) を update-alternatives で使用するように構成しました)

- - - - - -編集 - - - - - - - - - - - - - - -

この問題はtramp、リモート サーバーで正しい git を使用していないようです。git をインストールしたローカルとリモートの両方のパスmagit-git-executableを変更しようとしました。usr/local/git/bin/gitしかし、これはまだ機能しません。

これを解決するためのアイデアはありますか?ありがとう!

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

c++ - C++ メタプログラミングのトランポリン

私はメタプログラミングに関する本を読んでいますが、トランポリンに関する離脱があります:

私はそれがどのように機能するかを完全に理解していますが、それのアプリケーションが何であるかはわかりません! そして、あなたは通常、このテクニックをどこで使用しますか? 誰かそれについて知っていますか?ありがとう :)