ve arasında bir fark var mı ?


11

Şu anda lambda hesabını öğreniyorum ve aşağıdaki iki farklı lambda terimi yazmayı merak ediyordum.

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

Anlamda veya beta indirgeme yönteminde herhangi bir fark var mı, yoksa aynı şeyi ifade etmenin iki yolu var mı?

Özellikle bu çift yaratma tanımı beni meraklandırdı:

çifti =λxy.λp.pxy

Yanıtlar:


15

Bunlar sadece gösterim farklarıdır. λxyz.t , λx.λy.λz.t için λx.λy.λz.t . Burada sihir yok.

Gerçekten, ancak tanımı yazma değiştirerek bir işlevi olduğunu vurgulama eğilimindesiniz . Ama gerçekten aynı.pair=λxyp.pxypairtuλp.ptu


17

Birincisi, ikincisinin kısaltmasıdır. İfadeleri kısaltmak için yaygın bir sözdizimsel kural.

Öte yandan, dilde tupleleriniz varsa, arasında bir fark vardır.

  1. λx.λy.xy ve
  2. λ(x,y).xy .

İlk durumda, işleve tek bir argüman sağlayabilir ve ortaya çıkan işlevi diğer işlevlere iletebilirim. İkinci durumda, her iki argüman bir kerede sağlanmalıdır. Elbette, 1'i 2'ye dönüştürmek için kullanılabilecek bir fonksiyon var. Bu işleme (un) köri denir .

Bahsettiğiniz tanımı, ilkel veri türü olarak çiftler yerine (yukarıda ima ettiğim gibi) çiftler kavramının -culculus içine kodlanmasıdır.pairλ


2

Birden çok argümanı alan bir fonksiyonu tek argümanlı bir fonksiyonlar zincirine dönüştürmeye curried denir . İki işlev aslında aynıdır.

Körük hakkında Wikipedia makalesi


8
Lambda hesabında çoklu argümanlar alan bir işlev diye bir şey yoktur. ile tamamen aynıdır , sadece aynı değil. λxy.xyλx.λy.xy
sepp2k
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.