แคลคูลัสแลมบ์ดา: ความแตกต่างระหว่างบริบทและบริบทการประเมิน


12

ประการแรกฉันอยากจะบอกว่าข้อความของฉันด้านล่างอาจมีข้อผิดพลาดดังนั้นโปรดชี้ข้อผิดพลาดใด ๆ ในการกำหนดคำถามของฉัน

พิจารณาแคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์ด้วย booleans และ if-statement ซึ่งคำเหล่านี้ให้ไว้โดยไวยากรณ์นี้:

 t ::= v | t t | if t t t | x
 v ::= \x.t | #t | #f

บริบท C ในกรณีนี้จะได้รับตามไวยากรณ์นี้:

C ::= [-] | \x. C | C t | t C | if C t t | if t C t | if t t C 

นอกจากนี้หนึ่งสามารถกำหนดบริบทการประเมิน E ตามไวยากรณ์อื่น ๆ นี้:

E ::= [-] | \x. E | v E | E t | if E t t 

ฉันแบ่งคำถามออกเป็นสามจุดย่อยซึ่งฉันอยากจะตอบ

  1. เมื่อสองความคิดที่ใช้? ฉันรู้ว่าตัวอย่างเช่นบริบทการประเมินผลใช้เพื่อกำหนดความหมายของแคลคูลัส แต่การใช้บริบทยังคงหลบเลี่ยงฉันอยู่บ้าง นอกจากนี้ฉันต้องการการยืนยันความรู้ของฉันที่นี่
  2. เมื่อใดจึงจะเป็นที่ต้องการของผู้อื่นและทำไม
  3. คุณช่วยชี้บทความที่เกี่ยวข้องที่จะช่วยฉันจัดการเรื่องนี้ได้ไหม

คำตอบ:


15

บริบทใช้สำหรับวัตถุประสงค์หลายอย่าง แต่โดยทั่วไปจะกำหนดความสอดคล้องกับโปรแกรม บริบทการประเมินผลเป็นส่วนหนึ่งของบริบท พวกเขามักจะใช้เพื่อกำหนดความสัมพันธ์การลด ขอยกตัวอย่างของแต่ละข้อ

วิธีการหนึ่งที่อย่างเป็นทางการของการกำหนดความเสมอภาคโปรแกรมคือการพูดสองโปรแกรมและเป็นบริบทเท่ากับพวกเขาสามารถใช้แทนกันได้ในแต่ละบริบทโดยไม่มีการเปลี่ยนแปลงของพฤติกรรม เราสามารถกำหนดดังต่อไปนี้:และจะตามบริบทเท่ากับให้สำหรับบริบทปิดทั้งหมดสำหรับและ :ถ้าหาก ที เราบอกว่าบริบทกำลังปิดสำหรับหากทั้งหรือไม่มีตัวแปรอิสระ การแสดงออกN M N C [ ] M N C [ M ] ทีซี[ N ] เสื้อM , N C [ M ] C [ N ] M ทีเอ็มทีMNMNC[]MNC[M]tC[N]tM,NC[M]C[N]Mtหมายความว่าโปรแกรมลดในจำนวน จำกัด ของขั้นตอนในการค่าที(นอกเหนือจากกันโปรดทราบว่าคำจำกัดความของการเทียบเท่าเชิงบริบทนั้นเกี่ยวข้องกับแนวคิดการคำนวณที่หลากหลายเช่นกระบวนการที่เกิดขึ้นพร้อมกัน)Mt

ในทางตรงกันข้ามบริบทการประเมินผลเป็นบริบทที่ไม่ได้ปิดกั้นการประเมินผล อย่างแม่นยำยิ่งขึ้นบริบทการประเมินผลเป็นคำที่มีรูตรงจุดที่ขั้นตอนการลดปรมาณูถัดไปต้องเกิดขึ้น (หรืออาจเกิดขึ้นสำหรับการคำนวณที่ไม่ได้กำหนดขึ้น) ดังนั้นกฎต่อไปนี้ควรมีไว้สำหรับบริบทการประเมิน: เป็นตัวอย่างของการใช้บริบทการประเมินพิจารณากฎการลดสำหรับการโทรตามค่าแคลคูลัสที่เราไม่ได้ลดภายใต้\ดังนั้นแม้ว่าเราไม่มีการลด λλMNλx M→การλx Nλ

MNE[M]E[N]
λλMNλx.Mλx.N. สิ่งนี้สามารถแสดงได้อย่างง่ายดายด้วยกฎบริบททั่วไปด้านบนพร้อมกับไวยากรณ์สำหรับบริบทการประเมินที่ละเว้น -expressions บริบทการประเมินผลถูกนำมาใช้เป็นครั้งแรกในรายงานฉบับปรับปรุงเกี่ยวกับทฤษฎีวากยสัมพันธ์ของการควบคุมลำดับและรัฐโดย Felleisen และ Hiebλ

14

บริบทคือแนวคิดเกี่ยวกับวากยสัมพันธ์ บริบทเป็นคำที่มีหนึ่งช่องในนั้น (บางครั้งมีบริบทหลายหลุมคำจำกัดความจะได้รับอย่างชัดเจนในกรณีนั้น) ไวยากรณ์ของบริบทถูกกำหนดโดยการใช้ไวยากรณ์ของคำศัพท์และอนุญาตให้หนึ่ง subterm เป็นรูแทนคำ ใน BNF (ฉันใช้แลมบ์ดาแคลคูลัสเป็นตัวอย่างโดยไม่มีบูลีนและถ้าข้อความที่ไม่นำสิ่งใดมาเป็นตัวอย่าง): []

C::=[]xtCCtλx.C

เมื่อรวมกับนิยามของบริบทแล้วความหมายของการวางคำในบริบท ถ้าคือบริบทและเป็นคำที่แล้วเป็นคำที่ได้รับโดยการใส่ในต้นไม้ไวยากรณ์ที่หลุมอยู่ใน[t] นี่คือการทดแทนโดยที่ตัวแปรรับประกันว่าจะเกิดขึ้นเพียงครั้งเดียว (แต่โปรดทราบว่า "ตัวแปร" ที่ถูกแทนที่เป็นตัวแปรที่ระดับเมตาไม่ใช่ตัวแปรในแลมบ์ดา - แคลคูลัสหรือภาษาอื่น ๆ ของข้อกำหนด )C[]tC[t]t[]C[t][]t

บริบทใช้เพื่อกำหนดคำจำกัดความต่าง ๆ ในความหมาย ตัวอย่างทั่วไปคือแนวคิดของการประเมินส่วนใหญ่เกี่ยวข้องกับการกำหนดบริบทที่สามารถทำการประเมินได้ ตัวอย่างเช่นพิจารณา lambda-แคลคูลัส ความคิดพื้นฐานของการประเมินจะได้รับจากกฎการลดเบต้า: โดยที่เป็นการทดแทนนำไปใช้กับM

(λx.M)NβM{xN}
M{xN}xNM

นี่ไม่ใช่คำจำกัดความที่สมบูรณ์ของการลดเบต้า: เมื่อกำหนดแล้วสามารถลดเบต้าได้ถ้ามีเทอมและและตัวแปรเช่นนั้นที่ ; แต่โดยทั่วไปสามารถเบต้าลดถ้ามี subtermเช่นว่าN อีกวิธีหนึ่งในการแสดงสิ่งนี้คือสามารถลดเบต้าได้หากมีบริบทและคำบางคำและและตัวแปรเช่นนั้นtMNxt=(λx.M)Nttt=(λx.M)NtCMNxt=C[(λx.M)N]. เมื่อมีการลดลงดังกล่าวด้านขวามือคือ\}] หากต้องการใช้สัญกรณ์อย่างเป็นทางการการลดเบต้าจะถูกกำหนดโดยกฎการหักเงินต่อไปนี้: คำจำกัดความเดียวกันสามารถแสดงได้โดยทำให้บริบททุกชนิดชัดเจน: C[M{xN}]

(λx.M)NβM{xN}(β)MβNC[M]βC[N](γ)
(λx.M)NβM{xN}(β)MβNλx.Mβλx.N(Cλ)MβNMPβNP(C@<)MβNPMβPN(C@>)

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

D::=[]xtDDt
(λx.M)NnpM{xN}MnpND[M]npD[N]
(λx.M)NnpM{xN}(β)MnpNMPnpNP(C@<)MnpNPMnpPN(C@>)
Dจะถูกเรียกว่าบริบทการประเมินเพราะมันถูกใช้เพื่อกำหนดแนวคิดของการประเมิน บริบทการประเมินไม่ใช่บริบทชนิดพิเศษ ค่อนข้างจะเรียกมันว่าบริบทการประเมินผลเป็นเรื่องของสิ่งที่บริบทจะใช้สำหรับ

ฉันจะให้อีกตัวอย่างหนึ่งของบริบท ลองกำหนดค่าตามไวยากรณ์ต่อไปนี้: ทีนี้เรามานิยามบริบทอีกประเภท: เมื่อเทียบกับข้างต้นแล้วรูสามารถอยู่ด้านฟังก์ชันของแอปพลิเคชันได้ถ้าอาร์กิวเมนต์ของแอปพลิเคชันคือ ค่า กำหนดความคิดของการลดดังต่อไปนี้: V

V::=xV1Vnλx.M
E::=[]MEEV
D
(λx.M)VcbvaM{xV}(βcbva)MβNE[M]cbvaE[N](γcbva)
ด้วยข้อ จำกัด ที่อาร์กิวเมนต์ของฟังก์ชันจะต้องเป็นค่าในกฎข้อแรกและนามธรรมแลมบ์ดานั้นไม่ใช่บริบทเราจึงกำหนดกลยุทธ์การประเมินผลการโทรตามมูลค่า ด้วยข้อ จำกัด เพิ่มเติมที่อาร์กิวเมนต์ถูกประเมินก่อนฟังก์ชันนี่คือการเรียกใช้คำสั่งตามค่า

1
คำนิยามหลังของบริบทการประเมินของคุณนั้นใกล้เคียงกับแนวคิดเดิมของ Felleisen และ Hieb มันเป็นวิธีการทางวากยสัมพันธ์เพื่อช่วยแสดงลำดับการประเมินผลของเงื่อนไขของแคลคูลัส บริบทการประเมินผลเป็นบริบทชนิดพิเศษเนื่องจากจะทำให้สามารถแยกคำหนึ่งออกเป็นบริบทและ redex (เมื่อเป็นไปได้) โดยเฉพาะดังนั้นจึงเป็นการบ่งชี้กำหนดล่วงหน้าโดยที่ขั้นตอนการลดถัดไปควรเกิดขึ้น
Dave Clarke

@DaveClarke นอกจากนี้คุณยังสามารถใช้บริบทการประเมินเพื่อกำหนดการประเมินสำหรับแนวคิดการคำนวณที่ไม่ได้กำหนดไว้โดยที่คุณไม่มีการแบ่งแยกที่ไม่ซ้ำกันในบริบทการประเมินและ redex
Martin Berger

@MartinBerger: แน่นอน
Dave Clarke

@DaveClarke คุณหมายถึง“ บริบทการประเมินผลที่กำหนดเป็นบริบทแบบพิเศษหรือไม่” ฉันสามารถใช้ชุดบริบทโดยพลการและกำหนดกลยุทธ์การประเมินตามที่กำหนดไว้
Gilles 'SO- หยุดความชั่วร้าย'

@Gilles: บริบทการประเมินผลสามารถกำหนดกลยุทธ์การลดลงที่กำหนดไว้ได้ ฉันไม่คิดว่าฉันได้เห็นวลี "บริบทการประเมินผลที่กำหนด" แน่นอนว่าเป็นบริบทพิเศษ ฉันเห็นด้วยกับความคิดเห็นของคุณ ประเด็นคือยิ่งกว่าที่คำตอบของคุณคิดถึงความสำคัญทางประวัติศาสตร์ของบริบทการประเมินซึ่งเป็นการกำหนดแนวคิดของการลดลง
Dave Clarke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.