Apakah ada perbedaan antara

11

Saat ini saya sedang mempelajari kalkulus lambda dan bertanya-tanya tentang dua jenis penulisan istilah lambda berikut.

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

Apakah ada perbedaan makna atau cara Anda menerapkan pengurangan beta, atau hanya dua cara untuk mengekspresikan hal yang sama?

Terutama definisi penciptaan pasangan ini membuat saya bertanya-tanya:

pair = λxy.λp.pxy

agung
sumber

Jawaban:

15

Ini hanya perbedaan notasi. adalah singkatan . Tidak ada keajaiban di sini.λ x . λ y . λ z . tλxyz.tλx.λy.λz.t

Memang, tetapi Anda cenderung menekankan bahwa adalah fungsi dengan mengubah cara Anda menulis definisi. Tetapi ini benar-benar sama.pairpasangan=λxyhal.halxyλ p . p t upasangantkamuλhal.haltkamu

jmad
sumber
17

Yang pertama adalah singkatan untuk yang kedua. Ini adalah konvensi sintaksis yang umum untuk mempersingkat ekspresi.

Di sisi lain, jika Anda memiliki tupel dalam bahasa tersebut, maka ada perbedaan di antara keduanya

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

Dalam kasus sebelumnya saya bisa memberikan argumen tunggal ke fungsi, dan meneruskan fungsi yang dihasilkan ke fungsi lain. Dalam kasus terakhir, kedua argumen harus diberikan sekaligus. Tentu saja ada fungsi yang dapat diterapkan untuk mengubah 1 menjadi 2 dan sebaliknya. Proses ini dikenal sebagai currying (tidak) .

Definisi Anda sebutkan adalah pengkodean gagasan pasangan ke dalam -calculus, daripada pasangan sebagai tipe data primitif (seperti yang saya sebutkan di atas).λpasanganλ

Dave Clarke
sumber
2

Mengubah fungsi yang mengambil banyak argumen ke rangkaian fungsi dengan argumen tunggal disebut currying . Kedua fungsi ini pada dasarnya sama.

Artikel Wikipedia tentang kari

Ghassen Hamrouni
sumber
8
Tidak ada yang namanya fungsi mengambil banyak argumen dalam kalkulus lambda. adalah persis sama dengan , pada dasarnya tidak hanya sama. λxy.xyλx.λy.xy
sepp2k