มีความแตกต่างระหว่าง


11

ขณะนี้ฉันกำลังเรียนรู้แคลคูลัสแลมบ์ดาและสงสัยเกี่ยวกับการเขียนคำแลมด้าสองประเภทที่แตกต่างกันดังต่อไปนี้

  1. λxy.xy
  2. λx.λY.xY

มีความแตกต่างในความหมายหรือวิธีที่คุณใช้การลดเบต้าหรือว่าเป็นเพียงสองวิธีในการแสดงสิ่งเดียวกันหรือไม่

โดยเฉพาะคำจำกัดความของการสร้างคู่นี้ทำให้ฉันประหลาดใจ:

คู่ = λxY.λพี.พีxY

คำตอบ:


15

นี่เป็นเพียงความแตกต่างของสัญลักษณ์ สั้นสำหรับλx.λy.λz.tไม่มีเวทย์มนตร์ที่นี่λxYZ.เสื้อλx.λY.λZ.เสื้อ

แท้จริงแล้วแต่คุณมักจะเน้นว่าเป็นฟังก์ชันโดยเปลี่ยนวิธีที่คุณเขียนคำจำกัดความ แต่มันก็เหมือนกันจริงๆคู่=λxYพี.พีxYคู่เสื้อยูλพี.พีเสื้อยู


17

แรกคือตัวย่อสำหรับที่สอง มันเป็นแบบแผนทางวากยสัมพันธ์ทั่วไปเพื่อย่นนิพจน์

ในทางกลับกันถ้าคุณมีสิ่งอันดับในภาษานั้นมีความแตกต่างระหว่าง

  1. λx.λy.xyและ
  2. λ(x,y).xy(x,

ในกรณีก่อนหน้าฉันสามารถให้อาร์กิวเมนต์เดียวกับฟังก์ชันและส่งผ่านฟังก์ชันผลลัพธ์ไปยังฟังก์ชันอื่น ในกรณีหลังข้อโต้แย้งทั้งสองจะต้องให้ในครั้งเดียว แน่นอนว่ามีฟังก์ชั่นที่สามารถใช้ในการแปลง 1 เป็น 2 และในทางกลับกัน กระบวนการนี้เป็นที่รู้จักกัน(UN) currying

คำจำกัดความของคุณพูดถึงคือการเข้ารหัสความคิดของคู่เข้าสู่ -calculus แทนที่จะจับคู่เป็นชนิดข้อมูลดั้งเดิม (ตามที่ฉันบอกไว้ข้างต้น)pairλ


2

เปลี่ยนฟังก์ชั่นที่ใช้เวลาหลายข้อโต้แย้งที่จะห่วงโซ่ของฟังก์ชั่นที่มีการขัดแย้งเดียวที่เรียกว่าcurrying ทั้งสองฟังก์ชั่นนั้นเหมือนกัน

บทความเกี่ยวกับการทำแกง


8
ไม่มีสิ่งใดที่ฟังก์ชั่นที่ใช้โต้แย้งหลาย ๆ อย่างในแคลคูลัสแลมบ์ดา คือว่าเช่นเดียวกับไม่เพียงแค่เป็นแบบเดียวกัน λxY.xYλx.λY.xY
sepp2k
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.