ฉันกำลังอ่านเกี่ยวกับ LISP
ฉันเข้าใจว่าสัญกรณ์คำนำหน้าทำงานในระดับหนึ่ง แต่ฉันสงสัยว่ามีกลอุบายใด ๆ หรือไม่ที่จะทำให้ใช้งานง่าย
ฉันกำลังอ่านเกี่ยวกับ LISP
ฉันเข้าใจว่าสัญกรณ์คำนำหน้าทำงานในระดับหนึ่ง แต่ฉันสงสัยว่ามีกลอุบายใด ๆ หรือไม่ที่จะทำให้ใช้งานง่าย
คำตอบ:
การอ่านจากซ้ายไปขวาเป็นหลักเป็นภาษาพูดด้วยคำกริยาที่เหมาะสมสามารถช่วยได้ ตัวอย่างเช่น (+ 3 2) อาจเป็น "เพิ่มสามและสอง" ในกรณีทั่วไปมากขึ้นคุณสามารถพูดว่า "ดำเนินการ $ ใน $ operands" ใช้กับกรณีเดียวกัน: "ดำเนินการเพิ่มในสามและสอง"
( = 1 2 )
และ( > 4 2 )
เคล็ดลับ? เพื่ออะไร?
มันยังไม่รู้สึกว่าใช้งานง่ายสำหรับคุณเพราะตัวแยกวิเคราะห์ทางจิตของคุณไม่คุ้นเคย มันจะดีขึ้นถ้าคุณใช้และอ่านซ้ำแล้วซ้ำอีก
คุณอาจคิดว่าเป็นการเรียกใช้ฟังก์ชัน:
(operator operand1 operand2 ...)
ไม่มีอะไรพิเศษเกี่ยวกับมัน หากคุณโอเวอร์โหลดโอเปอเรเตอร์ใน C ++ (และภาษาอื่น ๆ อีกมากมายที่อนุญาต) คุณมักจะต้องกำหนดฟังก์ชันประเภทนี้ด้วยวิธีดังกล่าว:
MyClass operator+(MyClass const& x, MyClass const& y);
หลายภาษาใช้คำนำหน้าผสมมัดและแม้กระทั่ง postfix
เสียงกระเพื่อมเพียงใช้คำนำหน้าเท่านั้น - โดยค่าเริ่มต้น ถ้า sin (x) เป็นสัญชาตญาณจากคณิตศาสตร์แล้ว (sin x) อยู่ไม่ไกล ถ้าการเคลื่อนย้าย (dog, home) เป็นการเรียกขั้นตอนแบบดั้งเดิมจากนั้น Lisp จะเป็นเพียงแค่ (ย้าย dog home)
เสียงกระเพื่อมไม่ได้ทำให้ข้อยกเว้นสำหรับคณิตศาสตร์และถือว่า +, -, * และอื่น ๆ เช่นการเรียกฟังก์ชั่นสามัญ
เมื่อ (ในที่สุด) "ทุกอย่างเป็นการเรียกใช้งานฟังก์ชั่น" (หรือรูปแบบพิเศษหรือการขยายมาโครทั้งคู่มีการใช้ไวยากรณ์ของพื้นผิวของ "การเรียกใช้ฟังก์ชัน") ก็รู้สึกเป็นธรรมชาติ
ดังนั้นสำหรับ(= 1 2)
ฉันอ่านว่า 'เรียกตัวเลขเท่ากับการเปรียบเทียบกับ 1 และ 2'