問題タブ [mutual-recursion]
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.
function - OCaml:関数を定義する前に関数を宣言する
OCamlで関数を定義する前に関数を宣言する方法はありますか?私はOCamlインタープリターを使用しています。
私には2つの機能があります:
ただし、myFunctionAは作成される前にmyFunctionBを呼び出すことができないため、これは機能しません。
私はいくつかのグーグル検索をしましたが、何も見つからないようです。どうすればこれを達成できますか?
variables - 相互に依存する変数の定義
相互に依存する変数を定義する必要があります。これは、たとえば、1 つの var に別の var を持つベクトルが含まれていること、およびその逆のことを意味します。これを次のコードで示します。
しかし、このコードをロードすると、次のようになります。
明らかに、それはどのように機能するべきではありません。このような構造を印刷するとスタックオーバーフローが発生することは理解していますが、印刷する必要はありません。どうすればいいですか?
c++ - 循環C++テンプレートの依存関係を解決する
私が持っているとしましょう:
typedef a_with_bを解決するにはどうすればよいですか?
AにはBへのコールバックがあり、BにはAへのコールバックがあるため、これを実行したいと思います。たとえば、AはB.do_work()を呼び出し、最終的にBはA.done_work()を呼び出します。さらに、これらはそれぞれ非同期呼び出しであるため、Aには他にも重要な作業があるため、B.do_work()を呼び出して、Bが「done」を返すまで待つことはできません。
AにBを参照させることができない理由は、CなどのBを置き換える他の実装が存在する可能性があるためです。
c++ - C++ 相互テンプレート依存関係?
お互いを指す 2 つの構造が必要です。具体的には、次のことを実現したいと考えています。
ListType は以前に型として宣言されていないため、明らかにこれは機能しません。どうすればこれを行うことができますか? ご覧のとおり、イテレータ型をこれら 2 つの構造体の要素へのポインタとして使用しています。
奇妙に繰り返されるテンプレート パターンを使用することを考えていましたが、それではどこにも行きませんでした。##c++ の誰かもテンプレート エイリアスの使用を提案しましたが、それも失敗しました (少なくとも、このアイデアの使用方法はわかりません)。
概念的に何か間違ったことをしていますか? それとも「C++ の概念に沿っていない」のでしょうか? 私は確かに void*s でこれを行うことができましたが、私は物事を正しい方法にしようとしています:)
ありがとう!
haskell - 一連の相互再帰関数を高速化(またはメモ化)する方法
f
一連の関数を生成するプログラムがありg
、次のようになります。
f x
ここで、rとsはとのいくつかの興味深い関数ですg x
。foo
私は、リストであるということは、n番目を呼び出したときに、すでに計算されている場合f
は(n-1)番目を再計算しないことを意味することを素朴に望んでいました(関数である場合とそうでない場合のように)。プログラム全体を分解せずにこれをメモする方法はありますか(たとえば、関連するすべての引数を評価してから上向きに作業するなど)?f
f
g
f0
g0
algorithm - 相互再帰の適切な使用法を示す例
相互再帰が問題の最も洗練された解決策であり、単一の再帰関数に簡単に縮小/インライン化できない、非人工的な例があるかどうかを知りたいです。
私はすでにこの例を知っています(ウィキペディアから)
しかし、真剣に、彼らの正しい心の誰もこの方法で数のパリティをチェックすることはありません。
このトピックに関する以前の回答をSOで確認しました-相互再帰の例はありますか?しかし、答えはどれも私が探しているものではありません。
私はそれが再帰的な構文解析に役立つことを知っています-おそらくそれを実装する唯一の論理的な方法ですが、よりクリーンでより具体的な例(できれば数学的な例)が必要です。
助けてくれてありがとう?
編集:
どうやら相互再帰関数のすべてのタプルを単一の関数に減らすことができるので、相互再帰関数の使用が最良/最も読みやすい方法である場合があるかどうかを知りたいと思います。
haskell - Haskellが相互再帰モジュールをサポートしないのはなぜですか?
Haskellは相互再帰的なlet-bindingsをサポートしています。これは素晴らしいことです。Haskellは相互再帰モジュールをサポートしていません。これは時々ひどいものです。GHCにはその.hs-boot
メカニズムがあることは知っていますが、それはちょっとしたハックだと思います。
私の知る限り、相互再帰モジュールの透過的なサポートは比較的「単純」である必要があり、相互再帰let-bindingsとまったく同じように実行できます。個々のモジュールをコンパイル単位として使用する代わりに、強く接続されたすべてのコンポーネントを使用します。モジュール依存関係グラフのコンパイル単位としての。
ここで何かが足りませんか?Haskellがこのように相互再帰モジュールをサポートしない重要な理由はありますか?
c++ - C++ で相互に呼び出す 2 つの関数を作成する方法
if ループで難読化を行う、次のような 2 つの関数があります。
これに関する問題は、前に置くとfuncA
が見えないことfuncB
、またはその逆です。funcB
funcA
ここで助けやアドバイスをいただければ幸いです。
types - 相互再帰型とは何ですか?
MLの場合、再帰データ型の例は次のとおりです。
MLでの相互再帰データ型とは何ですか?その例は何ですか?