ฉันไม่คุ้นเคยกับงานล่าสุดของ Barry Jay แต่งานที่เก่ากว่าของเขารวมถึงสิ่งที่คุณไม่สามารถทำได้ใน Lisp เพราะประเภทให้ข้อมูลเพิ่มเติม
ตัวอย่างเช่นสมมติว่าคุณต้องการกำหนดขนาดของโครงสร้างข้อมูล Lisp มันเป็น 1 อะตอมและnสำหรับรายชื่อของnอะตอมและอื่น ๆ โดยทั่วไปขนาด (x) + ขนาด (y) (cons x y)
สำหรับ
ตอนนี้โยนประเภทต่างๆลงในส่วนผสม ขนาดของรายการจะมีความยาว ทีนี้ขนาดรายการลิสต์ของอะตอมเป็นเท่าไหร่? หากคุณพิจารณาโครงสร้างข้อมูลนี้เป็นรายการ (องค์ประกอบที่เกิดขึ้นเป็นรายการของอะตอม) คำตอบคือความยาวของรายการ หากคุณพิจารณาโครงสร้างข้อมูลนี้ว่ามีอะตอมที่ถูกเก็บไว้ในรายการรายการคำตอบคือผลรวมของความยาวของรายการองค์ประกอบ
ประเภทช่วยให้คุณสามารถแยกความแตกต่างระหว่างสองมุมมอง (รูปร่าง) ของข้อมูลดิบ คุณต้องการระบบประเภทที่ให้คุณแยกแยะระหว่าง (รายการ) (List Atom) และ (List List) (Atom) การนำไปใช้ที่แตกต่างกันมากที่สุดของความแตกต่างนี้อยู่กับคลาสประเภท (เช่นใน Haskell)