LISP - มาโคร

มาโครช่วยให้คุณสามารถขยายไวยากรณ์ของ LISP มาตรฐานได้

ในทางเทคนิคแมโครเป็นฟังก์ชันที่ใช้ s-expression เป็นอาร์กิวเมนต์และส่งคืนรูปแบบ LISP ซึ่งจะถูกประเมิน

การกำหนดมาโคร

ใน LISP มาโครที่ตั้งชื่อถูกกำหนดโดยใช้แมโครอื่นที่ชื่อ defmacro. ไวยากรณ์สำหรับการกำหนดมาโครคือ -

(defmacro macro-name (parameter-list))
"Optional documentation string."
body-form

นิยามแมโครประกอบด้วยชื่อของแมโครรายการพารามิเตอร์สตริงเอกสารทางเลือกและเนื้อหาของนิพจน์ Lisp ที่กำหนดงานที่จะดำเนินการโดยแมโคร

ตัวอย่าง

ให้เราเขียนมาโครง่ายๆชื่อ setTo10 ซึ่งจะใช้ตัวเลขและตั้งค่าเป็น 10

สร้างไฟล์ซอร์สโค้ดใหม่ชื่อ main.lisp และพิมพ์รหัสต่อไปนี้

(defmacro setTo10(num)
(setq num 10)(print num))
(setq x 25)
(print x)
(setTo10 x)

เมื่อคุณคลิกปุ่ม Execute หรือพิมพ์ Ctrl + E LISP จะดำเนินการทันทีและผลลัพธ์ที่ได้กลับมาคือ -

25
10