問題タブ [y-combinator]
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.
javascript - JavaScript の Y-Combinator 階乗は、教会の数字ではなく数字に対して機能します。
javascript で ES6 アロー関数を使用して、Church エンコーディングと Y-Combinator を実装することができました。しかし、階乗関数を評価しようとすると、
「Uncaught RangeError: Maximum call stack size exceeded(…)」エラーが発生しました。
FactGenを変更すると、
それだけで機能します。
私が知りたいのは、それの教会数字バージョンです。どうすればこれを達成できますか?
ocaml - ocamlでYコンビネータを使用して複数の引数を持つ関数を呼び出す方法は?
OCaml の Y コンビネータを理解しようとしています。hereからいくつかのコードを取得し、それを使用して Ackermann 関数を記述しようとしています。リンクの例では、関数に必要な引数は 1 つだけです。アッカーマン関数には 2 つの引数が必要なため、構文エラーが発生し続けます。私がこれまでに持っているコードは
機能させるにはどうすればよいですか?ありがとう。
ruby - Ruby で再帰を無効にして Y Combinator の使用を強制する
Rubyの再帰を「妨害」して、Rubyメソッドが再帰に関与する機能を無効にするにはどうすればよいですか?
ラムダ計算を教えるプログラムの作成に必要ですが、Ruby を使用します。
JavaScript によるクロックフォードの動機 - https://www.youtube.com/watch?v=ya4UHuXNygM&feature=youtu.be&t=1h9m53s
javascript - Y-combinator はプログラムで固定小数点をどのように計算しますか?
Y コンビネータの考え方を数学的に理解していると思います。これは、与えられた汎関数の不動点を返すためF
、 whereesf = Y(F)
はf
を満たしf == F(f)
ます。
しかし、実際の計算プログラムがどのように機能するのかわかりませんか?
ここに示す JavaScript の例を見てみましょう。
私が理解していない部分は、computed_factorial
関数 (固定小数点) が実際にどのように計算されるかです。Y の定義をたどると、その部分で無限再帰x(x)
に遭遇することがわかります。そこで暗示されている終了ケースは見当たりません。しかし、それは奇妙なことに戻ってきます。誰でも説明できますか?
scheme - Y コンビネータの実装スキーム
私は関数型プログラミングのスキームに本当に慣れていません。最近、ラムダ計算で Y コンビネーター関数に出くわしました。このようなものY ≡ (λy.(λx.y(xx))(λx.y(xx)))
です。スキームで実装したかったので、たくさん検索しましたが、上記の構造と完全に一致する実装は見つかりませんでした。私が見つけたそれらのいくつかを以下に示します。
と
ご覧のとおり、これらはこのY ≡ (λy.(λx.y(xx))(λx.y(xx)))
コンビネーター関数の構造と一致しません。まったく同じ方法でスキームに実装するにはどうすればよいですか?
haskell - Y-コンビネータの使い方; この無限再帰が 9 を返すのはなぜですか?
Y - コンビネータ
私はY-コンビネーターについて学ぼうとしており(その説明も素敵です) 、このwikiの例に出くわしました。この件に関する詳細な説明は、Haskell または Python のいずれかで大歓迎です。お願いします!
コード
問題
が適用されたときに呼び出された関数がfix
返されますが、その理由はわかりません。スタックをたどると、 が視覚化されます。9
fix
(\x -> 9)
f(f ... (fix f) ...)