ความอยากรู้: การพยากรณ์หมายถึงอะไร


21

ตามเอกสารของ Emacs:

progn is a special form in `C source code'.

(progn BODY...)

Eval BODY forms sequentially and return value of last one.
  1. สิ่งใดprognหมายถึง (หรือที่มาของมัน)
  2. useage: มันเป็นเทียบเท่ากับClojure's ->แมโคร?

คำตอบ:


31
  1. prognเป็นรูปแบบพิเศษที่ยืมมาจากภาษา Lisp เหมือน CL ในการใช้งานของพวกเขามันประกอบด้วยหลายprogs นิพจน์ที่ได้รับการประเมินและจำนวนที่ระบุว่าจะส่งคืนค่านิพจน์ใด prog1เช่นประเมินนิพจน์ทั้งหมดและส่งกลับค่าของค่าแรกprog2ประเมินค่านิพจน์ทั้งหมดและส่งคืนค่าของวินาทีprognประเมินค่านิพจน์ทั้งหมดและส่งคืนค่า n'th หรือแทนค่าของนิพจน์สุดท้าย

  2. prognใน Emacs Lisp เทียบเท่ากับ Clojure's doซึ่งใช้เป็นวิธีในการรวมหลายนิพจน์เป็นหนึ่งเดียว คุณจะต้องใช้มันสำหรับifเงื่อนไขของ Clojure


1
คำตอบที่ดีฉัน upvote มัน แต่เพื่อประโยชน์ของทางการ: คุณไม่ได้จริงๆต้องมันสำหรับเงื่อนไข, มีนัยcond progn
mbork

2
เอ่อผมก็พูดของ Clojure ซึ่งไม่ได้มีนัยในของมันprogn if
wasamasa

2
Emacs ยังมีprog1และprog2ในรูปแบบพิเศษในตัว
cjm

1
ฉันเคยเห็นสิ่งนี้ใช้ในการกำหนดค่าของผู้ใช้จำนวนมาก มีการเพิ่มประสิทธิภาพจากการ "รวมกลุ่ม" หลายสำนวนด้วยวิธีนี้เมื่อเทียบกับการประเมินหนึ่งครั้งหลังจากที่อื่น ๆ ภายนอกprognหรือไม่
elethan

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