church-encoding

    2

    1答えて

    に教会の番号を適用します。それには fun power m n f = n m f; を、私は掛け算を参照してください。乗算は: fun times m n f = m (n f); となり、私は間違っていることを知っています。 問題は、どの機能が教会番号を別のものに適用するのか理解できないことです。 たとえば、この式では何が生成されますか? (fn x => fn y => x (x y

    2

    1答えて

    ここには示されていない無関係のコード部分に使用するGADT拡張機能でコンパイルするときに、タイプエラーが発生するため、以下の関数が拒否されます。 newtype Church = Church { unC :: forall a. (a -> a) -> a -> a } to_c :: Int -> Church to_c 0 = let f0 f c = c in Church f0 t

    0

    1答えて

    次の定義された構造体と型には、2つの数値の乗算が必要です。それをするのに困っている。アドバイスをいただければ幸いです。 (define-struct Zero()) (define-struct Succ ([n : Nat])) (define-type Nat (U Zero Succ)) (: one Nat) (define one (Succ (Zero)))

    3

    2答えて

    構造と解釈コンピュータプログラムの私が読んでいる本はゼロを定義することによって、教会の数字を提示し、インクリメント機能 zero: λf. λx. x increment: λf. λx. f ((n f) x) これは私にはかなり複雑なようで、それが数字に私には本当に長い時間がかかりましたそれを取り出して1つ(λf.λx. f x)と2つ(λf.λx. f (f x))を得ます。 空のラム

    16

    3答えて

    私はハスケルに教会の数字を実装しようとしていますが、私は軽度の問題にぶつかりました。私が試してみて、減算を行うとき> T2 - >(T1 - - > T2)T =( - > T1 T):無限の種類を構築することができません:Haskellはチェックを発生 で無限の種類を訴えます。私のラムダ計算が有効であると私は99%肯定的です(そうでなければ教えてください)。私が知りたいのは、自分の仕事でハスケル

    1

    1答えて

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

    1

    1答えて

    私はハスケルの初心者です。 クラスの型のインスタンスを作成する方法があるかどうかを調べています。 データやnewtypeを使用せずにこのコードを使用する方法はありますか? type N = ∀n. (n -> n) -> n -> n instance Printable N where print :: N -> IO() read :: String -> N