LISP - ประเภทข้อมูล
ใน LISP ตัวแปรจะไม่ถูกพิมพ์ แต่อ็อบเจ็กต์ข้อมูลคือ
ประเภทข้อมูล LISP สามารถแบ่งได้เป็น.
Scalar types - ตัวอย่างเช่นประเภทตัวเลขอักขระสัญลักษณ์ ฯลฯ
Data structures - ตัวอย่างเช่นรายการเวกเตอร์บิตเวกเตอร์และสตริง
ตัวแปรใด ๆ สามารถใช้วัตถุ LISP เป็นค่าได้เว้นแต่คุณจะประกาศไว้อย่างชัดเจน
แม้ว่าจะไม่จำเป็นต้องระบุชนิดข้อมูลสำหรับตัวแปร LISP แต่จะช่วยในการขยายลูปบางอย่างในการประกาศวิธีการและสถานการณ์อื่น ๆ ที่เราจะกล่าวถึงในบทต่อ ๆ ไป
ชนิดข้อมูลจะถูกจัดเรียงเป็นลำดับชั้น ชนิดข้อมูลคือชุดของวัตถุ LISP และวัตถุจำนวนมากอาจอยู่ในชุดดังกล่าว
typep เพรดิเคตใช้สำหรับค้นหาว่าวัตถุเป็นของประเภทใดประเภทหนึ่งหรือไม่
type-of ฟังก์ชันส่งคืนชนิดข้อมูลของวัตถุที่กำหนด
พิมพ์ Specifiers ใน LISP
Type specifiers เป็นสัญลักษณ์ที่ระบบกำหนดสำหรับชนิดข้อมูล
อาร์เรย์ | fixnum | แพ็คเกจ | สตริงง่าย |
อะตอม | ลอย | ชื่อพา ธ | เวกเตอร์ง่าย ๆ |
bignum | ฟังก์ชัน | สุ่มรัฐ | ลอยเดียว |
นิดหน่อย | แฮชตาราง | อัตราส่วน | มาตรฐานถ่าน |
บิตเวกเตอร์ | จำนวนเต็ม | มีเหตุผล | กระแส |
ตัวละคร | คำสำคัญ | โต๊ะอ่านหนังสือ | สตริง |
[ทั่วไป] | รายการ | ลำดับ | [สตริงอักขระ] |
คอมไพล์ฟังก์ชั่น | ลอยยาว | สั้นลอย | สัญลักษณ์ |
ซับซ้อน | ไม่มี | ไบต์ที่ลงนาม | t |
ข้อเสีย | โมฆะ | อาร์เรย์แบบง่าย | ไบต์ที่ไม่ได้ลงนาม |
สองลอย | จำนวน | ง่ายบิตเวกเตอร์ | เวกเตอร์ |
นอกเหนือจากประเภทที่ระบบกำหนดเหล่านี้คุณสามารถสร้างชนิดข้อมูลของคุณเองได้ เมื่อกำหนดประเภทโครงสร้างโดยใช้defstruct ฟังก์ชันชื่อของประเภทโครงสร้างจะกลายเป็นสัญลักษณ์ประเภทที่ถูกต้อง
ตัวอย่าง 1
สร้างไฟล์ซอร์สโค้ดใหม่ชื่อ main.lisp และพิมพ์รหัสต่อไปนี้
(setq x 10)
(setq y 34.567)
(setq ch nil)
(setq n 123.78)
(setq bg 11.0e+4)
(setq r 124/2)
(print x)
(print y)
(print n)
(print ch)
(print bg)
(print r)
เมื่อคุณคลิกปุ่ม Execute หรือพิมพ์ Ctrl + E LISP จะดำเนินการทันทีและผลลัพธ์ที่ได้กลับมาคือ -
10
34.567
123.78
NIL
110000.0
62
ตัวอย่าง 2
ต่อไปมาตรวจสอบประเภทของตัวแปรที่ใช้ในตัวอย่างก่อนหน้านี้ สร้างไฟล์ซอร์สโค้ดใหม่ชื่อ main กระเพื่อมและพิมพ์รหัสต่อไปนี้ในนั้น
(defvar x 10)
(defvar y 34.567)
(defvar ch nil)
(defvar n 123.78)
(defvar bg 11.0e+4)
(defvar r 124/2)
(print (type-of x))
(print (type-of y))
(print (type-of n))
(print (type-of ch))
(print (type-of bg))
(print (type-of r))
เมื่อคุณคลิกปุ่ม Execute หรือพิมพ์ Ctrl + E LISP จะดำเนินการทันทีและผลลัพธ์ที่ได้กลับมาคือ -
(INTEGER 0 281474976710655)
SINGLE-FLOAT
SINGLE-FLOAT
NULL
SINGLE-FLOAT
(INTEGER 0 281474976710655)