間に差がある


11

私は現在ラムダ計算を学んでいて、ラムダ項を書くことの次の2つの異なる種類について疑問に思っていました。

  1. λxy.xy
  2. λx.λy.xy

意味やベータ削減を適用する方法に違いはありますか、それとも同じことを表現する2つの方法だけですか?

特にペア作成のこの定義は私に不思議に思いました:

ペア =λxy.λp.pxy

回答:


15

これらは単に表記法の違いです。はです。ここには魔法はありません。λのx λ Y λ Z tλxyz.tλx.λy.λz.t

実際、ですが、定義の記述方法を変更することにより、が関数あることを強調する傾向があります。しかし、それは本当に同じです。ペアpair=λxyp.pxyλ P p t upairtuλp.ptu


17

1つ目は2つ目の略語です。これは、式を短くするための一般的な構文規則です。

一方、言語にタプルがある場合、次のような違いがあります。

  1. λx.λy.xyおよび
  2. λ(x,y).xy

前者の場合、関数に単一の引数を指定して、結果の関数を他の関数に渡すことができます。後者の場合、両方の引数を同時に指定する必要があります。もちろん、1を2に、またはその逆に変換するために適用できる関数があります。このプロセスはカリー化(非)として知られています

あなたが言及するの定義は、ペアをプリミティブデータ型として(上記で示唆したように)ではなく、ペアを -calculusにエンコードすることです。λpairλ


2

複数の引数を取る関数を、単一の引数を持つ関数のチェーンに変換することをカリーと呼びます。2つの機能は基本的に同じです。

カレーに関するウィキペディアの記事


8
ラムダ計算では、複数の引数を取る関数のようなものはありません。はとまったく同じ、基本的に同じではありません。λ X λ Y x yλxy.xyλx.λy.xy
sepp2k 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.