บทนำ (Overview)
นอกจากฟังก์ชันที่อยู่ใน “CLISP” เราสามารถสร้างฟังก์ชันขึ้นมาเองได้โดยใช้คำสั่ง “Defun” ซึ่งสามารถทำให้ฟังก์ชันสามารถเขียนได้อย่างสลับซับซ้อนมากขึ้นและไปเป็นตามวัตถุประสงค์
ขั้นตอน (Steps)
- การใช้ “defun” มีโครงสร้างดังนี้
(defun function_name (parameter1 parameter2 parameterN)
expression1
expressionN
)
function_name: ชื่อ function ต้องไม่ซ้ำกับคำสงวน ซึ่งก็คือชื่อ “function” ที่มีอยู่แล้ว
parameter: ค่าที่ส่งเข้าไปในฟังก์ชัน สามารถมีได้ไม่จำกัด โดยแยกกันที่เว้นวรรค
expression: คำสั่งที่จะประมวลผลในฟังก์ชันในการเรียกใช้ เพียงแค่เรียกชื่อฟังก์ชัน และกรอกค่าพารามีเตอร์ที่กำหนด (function_name parameter1 parameter2 parameterN)[1]> (defun plus_func (a b) (+ a b)) PLUS_FUNC [2]> (plus_func 1 2) 3
- การใช้ “apply” ประกอบด้วยพารามิเตอร์ 2 ตัวดังนี้
(apply ‘ชื่อฟังก์ชัน ‘parameter_ตามฟังก์ชันที่กำหนด)
apply: ชื่อฟังก์ชัน
‘ชื่อฟังก์ชัน: ทั้งฟังก์ชันที่เกิด “defun” หรือคำสงวนของระบบ
‘parameter_ตามฟังก์ชันที่กำหนด: ถ้าฟังก์ชันต้องการพารามิเตอร์ 3 ตัว ก็ต้องใส่ให้ครบ 3 ตัวเป็นต้น[1]> (apply '+ '(1 2)) 3
ลองประยุกต์ใช้กับฟังก์ชัน “defun” ดังนี้
[1]> (defun cal (funcName x) (apply funcName (list x))) CAL [2]> (defun add5 (x) (+ x 5)) ADD5 [3]> (defun minus5 (x) (- x 5)) MINUS5 [4]> (cal 'add5 10) 15 [5]> (cal 'minus5 10) 5