3
เลขคณิตตีความ
ข้อเท็จจริงที่รู้จักกันเล็กน้อยคือถ้าคุณเปิดส่วนขยายภาษามากพอ (ghc) Haskell จะกลายเป็นภาษาที่แปลแบบไดนามิก! ตัวอย่างเช่นโปรแกรมต่อไปนี้ใช้การเพิ่ม {-# Language MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances #-} data Zero data Succ a class Add a b c | a b -> c instance Add Zero a a instance (Add a b c) => Add (Succ a) b (Succ c) มันไม่ได้ดูเหมือน Haskell อีกต่อไป สำหรับหนึ่งแทนที่จะใช้งานมากกว่าวัตถุเราดำเนินงานมากกว่าประเภท แต่ละหมายเลขเป็นประเภทของตัวเอง แทนที่จะเป็นฟังก์ชั่นเรามีคลาสประเภท …