คำถามติดแท็ก lambda-calculus

calcul-แคลคูลัสเป็นระบบที่เป็นทางการสำหรับการกำหนดฟังก์ชันการใช้ฟังก์ชันและการเรียกซ้ำซึ่งเป็นพื้นฐานทางคณิตศาสตร์ของการโปรแกรมเชิงฟังก์ชัน

2
“ แลมบ์ดา” ใน“ แลมบ์ดาแคลคูลัส” หมายถึงอะไร
เมื่อไม่นานมานี้ฉันได้อ่านเกี่ยวกับแคลคูลัสแลมบ์ดา แต่ฉันไม่สามารถหาคำอธิบายได้ว่าทำไมมันจึงเรียกว่า "แลมบ์ดา" หรือที่มาของนิพจน์ มีใครอธิบายต้นกำเนิดของคำศัพท์นี้ได้บ้าง

2
เครื่อง Combinator Y ทำตัวเป็นตัวอย่างว่า“ แลมบ์ดาแคลคูลัสไม่สอดคล้องกันอย่างไร”?
ในหน้าวิกิพีเดียสำหรับผู้แก้ไขจุดรวมคงที่เขียนข้อความที่ค่อนข้างลึกลับ Y combinator เป็นตัวอย่างของสิ่งที่ทำให้แคลคูลัสแลมบ์ดาไม่สอดคล้องกัน ดังนั้นจึงควรพิจารณาด้วยความสงสัย อย่างไรก็ตามมันมีความปลอดภัยที่จะต้องพิจารณา combinator Y เมื่อกำหนดไว้ในตรรกะทางคณิตศาสตร์เท่านั้น ฉันเคยเข้าร่วมนวนิยายสายลับบ้างไหม? อะไรในโลกที่มีความหมายโดยแถลงการณ์ที่ -calculus นั้น"ไม่สอดคล้อง"และมันควรจะ"ถูกมองด้วยความสงสัย" ?λλ\lambda

2
ควอนตัมแลมบ์ดาควอนตัม
คลาสสิกมี 3 วิธีที่เป็นที่นิยมในการคิดเกี่ยวกับการคำนวณ: เครื่องทัวริง, วงจรและแลมบ์ดา - แคลคูลัส (ฉันใช้นี่เป็นตัวจับสำหรับมุมมองการทำงานส่วนใหญ่) ทั้งสามวิธีมีผลคิดวิธีต่าง ๆ ปัญหาและเขตข้อมูลที่แตกต่างกันใช้ formulation ที่แตกต่างกันสำหรับเหตุผลนี้ เมื่อฉันทำงานกับการคำนวณควอนตัม แต่ฉันเคยคิดถึงรูปแบบวงจรเท่านั้น แต่เดิม QC ถูกกำหนดในแง่ของเครื่องทัวริงควอนตัมแต่เท่าที่ฉันเข้าใจความหมายนี้ (แม้ว่าเทียบเท่ากับวงจรควอนตัมถ้าทั้งสองสูตรอย่างระมัดระวัง) ไม่ได้เกือบเป็นผล สูตรที่ 3 (ในแง่ของแลมบ์ดา - แคลคูลัสหรือการตั้งค่าการทำงานที่คล้ายกัน) ฉันไม่คุ้นเคยอย่างสมบูรณ์ ดังนั้นคำถามของฉัน: คำจำกัดความที่มีประโยชน์ของควอนตัมแลมบ์ดา - แคลคูลัส (หรือกระบวนทัศน์การทำงานอื่น ๆ ) คืออะไร? ฟิลด์ QIP ใดที่ได้รับข้อมูลเชิงลึกที่ลึกซึ้งยิ่งขึ้นจากการใช้สูตรนี้แทนแบบจำลองวงจร หมายเหตุ ฉันรู้ว่าฉันไม่สนใจ formalisms นิยมอื่น ๆ เช่นเซลล์ออโต, RAM-รุ่น ฯลฯ ฉันยกเว้นเหล่านี้ส่วนใหญ่เป็นเพราะผมไม่ได้มีประสบการณ์กับความคิดในแง่ของรูปแบบเหล่านี้คลาสสิกให้อยู่คนเดียวquantumly ฉันยังทราบด้วยว่ามีทางเลือกยอดนิยมในการตั้งค่าควอนตัมเช่นการวัดตามโทโพโลยีและอะเดียแบติก ฉันไม่ได้พูดคุยกับพวกเขาเพราะฉันไม่คุ้นเคยกับคู่คลาสสิก


2
แลมบ์ดาแคลคูลัสเป็น syntactic ล้วนๆหรือไม่
ฉันอ่านเกี่ยวกับแลมบ์ดาแคลคูลัสมาสองสามสัปดาห์แล้ว แต่ฉันยังไม่ได้เห็นอะไรที่แตกต่างอย่างมากจากฟังก์ชั่นทางคณิตศาสตร์ที่มีอยู่และฉันต้องการที่จะรู้ว่ามันเป็นเพียงสัญกรณ์หรือไม่ คุณสมบัติหรือกฎที่สร้างขึ้นโดยสัจพจน์แคลคูลัสแลมบ์ดาที่ไม่ได้ใช้กับฟังก์ชันทางคณิตศาสตร์ทุกฟังก์ชัน ตัวอย่างเช่นฉันได้อ่านว่า: "อาจมีฟังก์ชั่นที่ไม่ระบุชื่อ" : ฟังก์ชั่นแลมบ์ดาไม่ระบุชื่อพวกเขาทั้งหมดเรียกว่าแลมบ์ดา อนุญาตให้ใช้ในการคำนวณทางคณิตศาสตร์เพื่อใช้ตัวแปรเดียวกันสำหรับฟังก์ชั่นที่แตกต่างกันหากชื่อไม่สำคัญ ตัวอย่างเช่นทั้งสองฟังก์ชั่นในการเชื่อมต่อ Galois มักจะถูกเรียกว่า * "ฟังก์ชั่นสามารถรับฟังก์ชั่นเป็นอินพุต" : ไม่ใช่เรื่องใหม่ที่คุณสามารถทำได้ด้วยฟังก์ชั่นทั่วไป "ฟังก์ชั่นเป็นกล่องดำ" : เพียงแค่อินพุตและเอาต์พุตก็เป็นคำอธิบายที่ถูกต้องของฟังก์ชันทางคณิตศาสตร์ ... นี่อาจดูเหมือนการอภิปรายหรือคำถามที่มีความเห็น แต่ฉันเชื่อว่าควรมีคำตอบที่ "ถูกต้อง" สำหรับคำถามนี้ ฉันต้องการที่จะรู้ว่าแลมบ์ดาแคลคูลัสเป็นเพียงสัญกรณ์หรือแบบแผนวากยสัมพันธ์สำหรับการทำงานกับฟังก์ชั่นทางคณิตศาสตร์หรือไม่ว่ามีความแตกต่างที่สำคัญหรือความหมายระหว่างแลมบ์ดาและฟังก์ชั่นธรรมดา

2
การหาคำศัพท์แลมบ์ดาที่มีประเภทยูเนี่ยน
หนังสือเรียนจำนวนมากครอบคลุมประเภทของจุดตัดในแลมบ์ดา - แคลคูลัส กฎการพิมพ์สำหรับการแยกสามารถกำหนดได้ดังต่อไปนี้ (ด้านบนของแลมบ์ดาแคลคูลัสที่พิมพ์ด้วยการพิมพ์ย่อย): Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I)Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I) \dfrac{\Gamma \vdash M : T_1 \quad \Gamma \vdash M : T_2} {\Gamma \vdash M : T_1 \wedge T_2} (\wedge I) \qquad\qquad \dfrac{} {\Gamma \vdash M : \top} (\top I) ประเภทแยกมีคุณสมบัติที่น่าสนใจเกี่ยวกับการทำให้เป็นมาตรฐาน: คำแลมบ์ดาสามารถพิมพ์ได้โดยไม่ต้องใช้⊤I⊤I\top Iกฎถ้ามันเป็นมาตรฐานอย่างยิ่ง คำแลมบ์ดายอมรับประเภทที่ไม่มี⊤⊤\top iff ซึ่งมีรูปแบบปกติ ถ้าหากแทนที่จะเพิ่มทางแยกเราจะเพิ่มสหภาพ Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2)Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2) \dfrac{\Gamma \vdash M : T_1} {\Gamma \vdash …

4
ชัดเจนและเป็นธรรมชาติของ combinator จุดคงที่ (Y combinator)
แก้ไข combinator จุดคงที่ (aka combinator Y) ในแคลคูลัสแลมบ์ดา (untyped) ( ) ถูกกำหนดเป็น:λλ\lambda FIX≜λf.(λx.f (λy.x x y)) (λx.f (λy.x x y))≜λf.(λx.f (λy.x x y)) (λx.f (λy.x x y))\triangleq \lambda f.(\lambda x. f~(\lambda y. x~x~y))~(\lambda x. f~(\lambda y. x~x~y)) ฉันเข้าใจวัตถุประสงค์และสามารถติดตามการใช้งานแอปพลิเคชันได้อย่างสมบูรณ์แบบ ฉันต้องการที่จะเข้าใจวิธีการแก้ไขเป็นผลมาจากหลักการแรก นี่คือเท่าที่ฉันได้รับเมื่อฉันพยายามที่จะได้รับมันด้วยตนเอง: FIX เป็นฟังก์ชั่น: FIX ≜λ…≜λ…\triangleq \lambda_\ldots การแก้ไขใช้ฟังก์ชันอื่นfffเพื่อทำให้เกิดการเรียกซ้ำ: FIX ≜λf.…≜λf.…\triangleq \lambda f._\ldots อาร์กิวเมนต์แรกของฟังก์ชั่นfffคือ …

1
มีแคลคูลัส SKI ที่พิมพ์หรือไม่
ส่วนมากของเรารู้ว่าการติดต่อระหว่างcombinatory ตรรกศาสตร์และแลมบ์ดาแคลคูลัส แต่ฉันไม่เคยเห็น (บางทีฉันไม่ได้ดูลึกพอ) เทียบเท่ากับ "combinators ที่พิมพ์" ซึ่งสอดคล้องกับแคลคูลัสแลมบ์ดาที่พิมพ์ได้ง่าย สิ่งนั้นมีอยู่จริงหรือไม่? เราจะหาข้อมูลเกี่ยวกับมันได้จากที่ไหน?

5
แคลคูลัสกับการสะท้อน
ฉันกำลังมองหาแคลคูลัสง่ายๆที่สนับสนุนการให้เหตุผลเกี่ยวกับการสะท้อนกลับคือการวิปัสสนาและการจัดการโปรแกรมที่กำลังทำงานอยู่ คือมี untyped ขยายแคลคูลัสที่ช่วยให้หนึ่งในการแปลงλ -terms ลงในแบบฟอร์มที่สามารถจัดการ syntactically แล้วประเมินผลภายหลังหรือไม่?λλ\lambdaλλ\lambda ฉันจินตนาการว่าแคลคูลัสมีสองคำหลักเพิ่มเติม : ใช้เวลาวีและผลิตตัวแทนของโวลต์ทำให้ถูกต้องในการจัดการประโยคreflect vreflect v\mathtt{reflect}\ vvvvvvv : ใช้การแทนประโยคของคำศัพท์และประเมินมันeval veval v\mathtt{eval}\ v เพื่อสนับสนุนการสะท้อนจำเป็นต้องมีการแสดงคำศัพท์ทางวากยสัมพันธ์ มันจะมีลักษณะเช่น: จะแสดงเป็นระยะ ( L M R ( E ) )ที่ R ( E )เป็นรุ่นที่สะท้อนให้เห็นของอี ,λx.eλx.e\lambda x.e(LAM R(e))(LAM R(e))(\mathsf{LAM}\ R(e))R(e)R(e)R(e)eee จะแสดงเป็นคำ ( A P P R ( e ) R ( …

5
เหตุใดภาษาการใช้งานทัวริงจึงสมบูรณ์
บางทีความเข้าใจที่ จำกัด ของฉันในเรื่องไม่ถูกต้อง แต่นี่คือสิ่งที่ฉันเข้าใจจนถึง: ฟังก์ชั่นการเขียนโปรแกรมมีพื้นฐานมาจากแลมบ์ดาแคลคูลัสสูตรโดยโบสถ์อลองโซ การโปรแกรมเชิงซ้อนนั้นขึ้นอยู่กับโมเดลเครื่องจักรทัวริงซึ่งผลิตโดย Alan Turing นักเรียนของศาสนจักร แลมบ์ดาแคลคูลัสนั้นทรงพลังและสามารถเป็นเครื่องทัวริงได้ซึ่ง หมายความว่าพวกมันเทียบเท่ากับกำลังในการคำนวณ หากการเขียนโปรแกรมใช้งานได้นั้นมีพื้นฐานมาจากแลมบ์ดาแคลคูลัสไม่ใช่เครื่องทัวริงทำไมบางคน (หรือทั้งหมด) อธิบายว่าทัวริงสมบูรณ์ไม่ใช่แลมบ์ดาสมบูรณ์หรืออะไรแบบนั้น? คำว่า "ทัวริงสมบูรณ์" เป็นพิเศษในทางใด ๆ ที่ทัวริงเครื่องจักรหรือเป็นเพียงคำ? สุดท้ายถ้าภาษาที่จำเป็นนั้นใช้ภาษาทัวริงและคอมพิวเตอร์นั้นเป็นเครื่องทัวริงที่ไม่มีหน่วยความจำไม่สิ้นสุดหมายความว่าภาษาเหล่านั้นทำงานได้ดีกว่าภาษาโปรแกรมที่ใช้งานได้บนพีซีที่ทันสมัยของเราหรือไม่ หากเป็นเช่นนั้นแล้วอะไรคือสิ่งที่เทียบเท่ากับเครื่องแคลคูลัสแลมบ์ดา? ฉันรู้ว่านี่เป็นคำถามที่แยกกัน 3 คำถาม แต่พวกเขาทั้งหมดมีความสัมพันธ์กันอย่างใกล้ชิดและแต่ละคำถามขึ้นอยู่กับคำถามก่อนหน้าว่าเป็นคำถามที่ถูกต้องที่จะเริ่มต้นด้วย

5
แลมบ์ดาแคลคูลัสนอกการเขียนโปรแกรมการทำงาน
คำถามนี้ถูกย้ายจาก Theoretical Computer Science Exchange Exchange เนื่องจากสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันเป็นนักศึกษามหาวิทยาลัยและตอนนี้เรากำลังศึกษาแลมบ์ดาแคลคูลัส อย่างไรก็ตามฉันยังคงมีเวลาเข้าใจยากว่าทำไมสิ่งนี้มีประโยชน์สำหรับฉัน ฉันรู้ว่าถ้าคุณเขียนโปรแกรมฟังก์ชั่นมากมายมันอาจจะมีประโยชน์ แต่ฉันคิดว่ามันไม่จำเป็นสำหรับการเรียนรู้การเขียนโปรแกรมฟังก์ชั่นคุณคิดอย่างไร? ประการที่สองมีการใช้แลมบ์ดาแคลคูลัสในขอบเขตของวิทยาศาสตร์คอมพิวเตอร์ แต่นอกเหนือจากภาษาโปรแกรมที่ใช้งานได้หรือไม่?

2
การเทียบเท่าเบต้าคืออะไร
คำถามนี้ถูกย้ายจาก Theoretical Computer Science Exchange Exchange เนื่องจากสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 7 ปีที่ผ่านมา ในสคริปต์ที่ฉันกำลังอ่านเกี่ยวกับแคลคูลัสแลมบ์ดามีการนิยามเบต้าเทียบเท่าดังนี้: -equivalenceเป็นความสมดุลที่เล็กที่สุดที่มี\≡ บีตา→การบีตาββ\beta≡β≡β\equiv_\beta→β→β\rightarrow_\beta ฉันไม่รู้ว่ามันหมายถึงอะไร ใครสามารถอธิบายมันในแง่ง่ายกว่า? อาจจะด้วยตัวอย่าง? ฉันต้องการมันสำหรับบทแทรกตามทฤษฎีบทโบสถ์ - รัสเซอร์พูด หาก M N แล้วมี L กับ M L และ N \ twoheadrightarrow_ \ เบต้าลิตร≡β≡β\equiv_\beta↠β↠β\twoheadrightarrow_\beta↠β↠β\twoheadrightarrow_\beta

1
หาก (λ x. xx) มีประเภทระบบประเภทนั้นจะไม่สอดคล้องกันหรือไม่?
หากระบบประเภทสามารถกำหนดประเภทให้กับλ x . x xหรือไม่ยุติ(λx . x x) (λ x . x x)ระบบนั้นจะไม่สอดคล้องกันเป็นผลหรือไม่ ทุกประเภทอยู่ภายใต้ระบบนั้นหรือไม่ คุณสามารถพิสูจน์ได้ว่าเป็นเท็จ?

2
เกณฑ์พื้นฐานสำหรับแคลคูลัสของ combinator
เป็นที่ทราบกันดีว่า Combinators S และ K นั้นเป็นพื้นฐานสำหรับแคลคูลัสของ combinator ในแง่ที่ว่า combinators อื่น ๆ สามารถแสดงในรูปของมันได้ นอกจากนี้ยังมีพื้นฐานของ B, C, K, W ของ Curry ซึ่งมีคุณสมบัติเหมือนกัน ต้องมีจำนวนฐานดังกล่าวไม่ จำกัด แต่ฉันไม่รู้จักผู้อื่น ผมทราบว่ามีจำนวนของฐานเดียว Combinator เช่น Combinator เล็กน้อยและอื่น ๆ สร้าง / การตรวจสอบโดยฟอก อย่างไรก็ตามสิ่งเหล่านี้คือ "ผู้ประสาน" ที่ไม่เหมาะสมซึ่งหมายความว่าพวกเขาแสดงออกในแง่ของผู้รวมกลุ่มคนอื่น ๆ มากกว่าเป็นนามธรรมที่บริสุทธิ์ 1 เพื่อจุดประสงค์ของคำถามนี้ฉันสนใจเฉพาะชุดพื้นฐานที่ประกอบด้วยผู้ประกอบการที่เหมาะสม มีการศึกษาพื้นฐานที่เป็นไปได้อื่น ๆ อีกหรือไม่ อุดมคติจะเป็นบางสิ่งบางอย่างตามแนวการศึกษา Wolfram ของการคำนวณรูปแบบอื่น ๆ อีกมากมายซึ่งเป็นการผสมผสานระหว่างการศึกษาอย่างเป็นระบบ โดยเฉพาะอย่างยิ่งฉันสนใจว่าตัวอย่างง่ายๆของสิ่งต่อไปนี้เป็นที่รู้จักกัน: ชุดพื้นฐานที่น้อยที่สุดซึ่งรวมถึงตัวฉัน combinator …

4
ทำไมจึงเป็นสิ่งสำคัญสำหรับฟังก์ชั่นที่จะไม่ระบุชื่อในแลมบ์ดาแคลคูลัส?
ฉันกำลังดูการบรรยายของ Jim Weirich หัวข้อ ' Adventures in Functional Programming ' ในการบรรยายครั้งนี้เขาแนะนำแนวคิดของ Y-combinators ซึ่งโดยพื้นฐานแล้วพบว่าจุดคงที่สำหรับฟังก์ชันลำดับที่สูงขึ้น แรงจูงใจอย่างหนึ่งที่เขากล่าวถึงคือสามารถแสดงฟังก์ชันแบบเรียกซ้ำโดยใช้แลมบ์ดาแคลคูลัสเพื่อให้ทฤษฎีโดยคริสตจักร (สิ่งที่คำนวณได้อย่างมีประสิทธิภาพสามารถคำนวณได้โดยใช้แคลคูลัสแลมด้า) ปัญหาก็คือฟังก์ชั่นไม่สามารถเรียกตัวเองได้อย่างง่าย ๆ เพราะแคลคูลัสแลมบ์ดาไม่อนุญาตให้ใช้ฟังก์ชั่นที่ตั้งชื่อเช่น n(x,y)=x+yn(x,y)=x+Yn(x, y) = x + y ไม่สามารถรับชื่อ ' ' ได้จะต้องกำหนดโดยไม่ระบุชื่อ:nnn ( x ,y)→x+y(x,y)→x+y(x, y) \rightarrow x + y ทำไมการแคลคูลัสแลมบ์ดาจึงมีฟังก์ชั่นที่ไม่มีชื่อ หลักการใดที่ถูกละเมิดหากมีฟังก์ชั่นที่มีชื่อ? หรือว่าฉันเพิ่งเข้าใจผิดวิดีโอของจิม

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