lambda-calculus

    4

    1答えて

    ブール演算子とNOT演算子のラムダ計算のプログラミング言語を変えて実装したいと考えました。 これらは次のとおりです。 TRUE = lx.ly. x FALSE = lx.ly. y NOT = lx. x FALSE TRUE それはJavascriptとPythonで行うには些細だが var TRUE = function(x,y){ return x;} var FALSE = f

    1

    1答えて

    の減少を停止するときに私は、ラムダ低減がterminates.Forたとえば、数2は我々はベータ代入ルールを適用し、それを作り続けるべきではないのはなぜ \xy.xxy として書かれているかについて混乱していますlike \xy.(x)xy =>\ab.axy =>\b.yx =>y これは明らかに間違っています。しかし、私は理由を知りません。

    0

    1答えて

    を理解することができません私はF ωに関する論文を読んでいて、この文の背後にある理由を理解することはできません:FORALL 種類のタイプ項(&; γ:* F γ。 → β)は、Fが常にβを返す定数関数であることを示しています。 私は 'γ → β F' を推測するタイプの用語、すなわち、矢印タイプです。この矢印タイプは、タイプアプリケーション 'F γ'によって計算されたタイプの引数を取り、タイ

    2

    1答えて

    単純な型のラムダ計算をCoqで形式化しようとしています。空のコンテキストは空です。 これは正式化の関連部分です。 Require Import Coq.Arith.Arith. Require Import Coq.MSets.MSets. Require Import Coq.FSets.FMaps. Inductive type : Set := | tunit : type |

    1

    1答えて

    ラムダ計算を研究していて、それについての基礎知識しかありません。私は多くのウェブサイトと論文を読んで、ロジック(T/F /および/または)、述語と後継者がどのように働くのかを理解していますが、このラムダ計算を使用してプログラミングで他のことを達成する方法はわかりません。 ラムダ計算で自然数と有理数のペアを整数のペアとして使用して、正と負の整数を定義する方法を知りたいと思います。 ありがとうございま

    1

    1答えて

    \x->yアルファは\y->yに相当しますか?私は本当に混乱して助けてください。

    2

    1答えて

    私は\x->\y->xの中で2番目のxが最初のものに拘束されていることを知っています(私が間違っていることを修正してください)。\x->\x->x最後のxは中間のものに拘束されています。しかし、これはアルファ等価性に関しては違いがありますか? アルファは\x->\y->xに相当しますか?

    2

    1答えて

    範囲を作成する方法の例を教えてもらえますかJOOL & JOOLのRangeの意味はなんですか?そのJavaの医者は と言っています。範囲は同じタイプの2倍の特殊なTuple2です。 また、Rangeは public boolean overlaps(Tuple2<T, T> other) { return Tuple2.overlaps(this, other); } publi

    1

    1答えて

    私は型なしラムダ計算の実装をプログラミングするのに数週間を費やしました。 私は、ウィキペディアで与えられた置換の定義にうまく収まる、置換を避けるキャプチャのための再帰的な定義を定式化していると思います。 誰かが私のために正しいのかどうかを確かめることができたら、私は本当に感謝しています。なぜなら、この定義がめったに使われない理由を説明しているからです。 ウィキペディアの定義: x[x := N]

    1

    3答えて

    fac n = if n < 2 then 1 else n * fac (n-1) main = do putStrLn "Enter a number: " number <- getLine print $ number >>= fac if文なしで再帰的階乗関数を書く方法はわかりません。私たちの教授はラムダ計算について何か言っていました。