巨集

巨集 （ Macro ） ， 是一種批 - { } - 量處理的稱謂 。 計算機科學裏的宏是一種抽象 （ Abstraction ） ， 它根據一系列預定義的規則替換一定的文本模式 。 解釋器或編譯器在遇到宏時會自動進行這一模式替換 。 對於編譯語言 ， 宏展開在編譯時發生 ， 進行宏展開的工具常被稱爲宏展開器 。 宏這一術語也常常被用於許多類似的環境中 ， 它們是源自宏展開的概念 ， 這包括鍵盤宏和宏語言 。 絕大多數情況下 ， “ 宏 ” 這個詞的使用暗示着將小命令或動作轉化爲一系列指令 。 宏的用途在於自動化頻繁使用的序列或者是獲得一種更強大的抽象能力 。 計算機語言如C語言或彙編語言有簡單的宏系統 ， 由編譯器或彙編器的預處理器實現 。 C語言的宏預處理器的工作只是進行簡單的文本搜索和替換 ， 使用附加的文本處理語言如M4 ， C程序員可以獲得更精巧的宏 。 Lisp類語言如Common Lisp和Scheme有更精巧的宏系統 ： 宏的行爲如同是函數對自身程序文本的變形 ， 並且可以應用全部語言來表達這種變形 。 一個C宏可以定義一段語法的替換 ， 然而一個Lisp的宏卻可以控制一節代碼的計算 。 獲得了控制代碼的執行順序 （ 見惰性計算和非限制函數 ） 的能力 ， 使得新創建的語法結構與語言內建的語法結構不可區分 。 例如 ， 一種Lisp方言有cond而沒有if ， 就可以使用宏由前者定義後者 。 Lisp語法的去部主要擴展 ， 比如面向對象的CLOS系統 ， 可以由宏來定義 。 MacroML有型別語法宏 ， 一種有效的理解方式是把這種語法宏看作是多階段計算 。