問題タブ [lambda-calculus]
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.
scala - 関数の最初の引数をローテーションして n 番目にする
少なくともn
引数を持つ関数が与えられた場合、最初の引数を回転させて、それがn
th 引数になるようにします。例 (型なしラムダ計算):
等々。
一般的な書き方r
でいいの?それを知ったらn >= 2
?
Scalaで述べられている問題は次のとおりです。
たとえば、回転は を取りLam(a => Lam(b => Lam(c => Ap(Ap(a, b), c))))
、返す必要があります。Lam(b => Lam(c => Lam(a => Ap(Ap(a, b), c))))
scala - 一次パラメトリック多型と一次関数
私は論文を読んでいますGenerics of a Higher Kind
、最初の文は
Java 5およびC#2.0では、ジェネリックスの名前で主流のオブジェクト指向プログラミング言語に一次パラメトリックポリモーフィズムが導入されました。
一次パラメトリック多型とは何か、一次関数とは何かもよくわかりません。高階関数とは、関数を受け取って関数を返す関数ですが、ゼロとは何かがわかりません。順序関数、一次関数。私はここから次のような説明を見ました:
f->gは0次
f->g->hは1次
f->g->h->iは2次
などです。
誰かが私のためにこれらの2つの用語を説明できますか?
lambda-calculus - ラムダ計算における反復関数
私はこのような機能を持っています
型指定されていないラムダ計算でそのような関数を定義するにはどうすればよいですか?
ヒント/ヘルプをいただければ幸いです。
functional-programming - SKK と II がベータ版であることを証明するには、ラムダ計算
私はラムダ計算が初めてで、次のことを証明するのに苦労しています。
SKK と II はベータ版に相当します。
どこ
S = ラムダ xyz.xz(yz) K = ラムダ xy.x I = ラムダ xx
SKKを開いてベータ削減しようとしましたが、どこにも行きませんでした。S、Kを拡張せずにSKKをさらに削減できるとは思わないでください.
haskell - HLintのコンテキストでetareduceは何を意味しますか
私はチュートリアルhttp://haskell.org/haskellwiki/How_to_write_a_Haskell_programを見ています
このプログラムをHLintで実行すると、次のエラーが発生します。
この文脈で「EtaReduce」が正確に何を意味するのかを誰かが明らかにすることはできますか?
lambda - 比較的高速な型なしラムダ計算機を構築することは可能ですか?
純粋な型指定されていないラムダ計算は強力な概念です。ただし、実世界で使用するためのマシンまたはインタープリターを構築することは、(ほぼ) 不可能であると説明されることがよくあります。これを調べたい。比較的高速な型指定されていないラムダ計算機を構築することは理論的に可能ですか?
比較的高速とは、一般に、同様の量のリソース (ゲート、操作、物理スペース、電力使用など) 内で、同様の範囲のタスクについて、最新のチューリングのようなアーキテクチャに匹敵することを意味します。
マシンの実装層とアーキテクチャ層に制限はありませんが、何らかの方法で物理的かつある程度現実的に実現可能でなければなりません。IO の処理方法にも制限はありません。
- 可能であれば、主な課題は何ですか?
- 不可能な場合、その理由と方法は?
- この分野の研究はどのような状況ですか?
- 最も関連性の高い分野と科目は?
ラムダ計算に基づくコンピューター アーキテクチャの実現可能性について、どの程度わかっていますか?
同様の根拠をカバーする質問:
lambda-calculus - ラムダ計算の値で呼び出す
私は型とプログラミング言語を使って作業しています。Pierceは、値削減戦略による呼び出しについて、用語の例を示していid (id (λz. id z))
ます。内側のリデックスid (λz. id z)
は最初に減少し、最初の減少の結果として、外側のリデックスが通常の形式に減少する前にλz. id z
与えられます。id (λz. id z)
λz. id z
ただし、値による呼び出しの順序は、「最も外側のレデックスのみが削減される」、「レデックスは、右側がすでに値に削減されている場合にのみ削減される」と定義されています。この例id (λz. id z)
では、最も外側のredexの右側に表示され、縮小されています。これは、最も外側のレデックスのみが削減されるというルールとどのように二乗されますか?
「最も外側」と「最も内側」という答えは、ラムダ抽象化のみを指しているのでしょうか。したがって、の項についてt
はλz. t
、t
減らすことはできませんが、redexs t
では、可能であればt
値に減らしてから、減らしますか?v
s v
ruby - ラムダの呼び出し/適用と関数呼び出し - Ruby の構文は異なります。なんで?
私は Ruby を初めて使用し、言語設計の原則のいくつかを理解しようとしています。私が正しく理解していれば、Ruby でのラムダ式の呼び出しには角括弧を使用する必要があり、「通常の」関数呼び出しには「通常の」/丸括弧を使用する必要があります。
構文が異なる特別な理由はありますか? または、言い換えれば、(なぜ) 呼び出し元は、関数を呼び出すか、ラムダ式を適用するかを認識する必要がありますか?
haskell - Haskell の教会数字
定義を使用して、haskell で教会の数字を印刷しようとしています。
Haskell コード:
Haskellコンソールに入力すると、次のエラーが表示されます
エラーの内容を正確に把握することはできません。
ありがとうございました!
haskell - haskell での教会数字の減算
Haskell で教会の数字を実装しようとしていますが、ちょっとした問題が発生しました。Haskell は無限型について不平を言っています
チェックが発生します: 無限型を構築できません: t = (t -> t1) -> (t1 -> t2) -> t2
引き算をしようとすると。私は自分のラムダ計算が有効であることを 99% 確信しています (そうでない場合は教えてください)。私が知りたいのは、関数で haskell を機能させるためにできることがあるかどうかです。