宏可以擴(kuò)展標(biāo)準(zhǔn)LISP的語法。
從技術(shù)上講,宏是一個(gè)函數(shù),它接受一個(gè)s-expression作為參數(shù),并返回一個(gè)LISP的形式,然后進(jìn)行評估計(jì)算。
在LISP中,一個(gè)名為宏使用另一個(gè)名為defmacro宏定義。定義一個(gè)宏的語法:
(defmacro macro-name (parameter-list) "Optional documentation string." body-form)
宏定義包含宏的名稱,參數(shù)列表,可選的文檔字符串,和Lisp表達(dá)式的體,它定義要由宏執(zhí)行的任務(wù)。
實(shí)例
讓我們寫了一個(gè)名為setTo10簡單的宏,將采取一系列并將其值設(shè)置為10。
創(chuàng)建一個(gè)名為main.lisp新的源代碼文件,并在其中輸入如下代碼:
defmacro setTo10(num) (setq num 10)(print num)) (setq x 25) (print x) (setTo10 x)
當(dāng)您單擊Execute按鈕,或按下Ctrl+ E,LISP立即執(zhí)行它,返回的結(jié)果是:
25 10