ดูเหมือนว่าอินสแตนซ์ที่ถูกผูกมัดใด ๆ ควรมีการนำ Enum ไปปฏิบัติอย่างมีสติ ฉันไม่สามารถคิดตัวอย่างแบบส่วนตัวได้แม้ว่าจะมีบางคนที่มากับคนที่ไม่ใช่พยาธิวิทยาฉันก็จะเข้าใจว่าทำไมมันถึงไม่เป็นเช่นนั้น
จากการทำ:iสองประเภทของคลาสดูเหมือนว่าข้อยกเว้นเพียงอย่างเดียวในปัจจุบันในไลบรารีมาตรฐานคือสำหรับสิ่งอันดับซึ่งถูกผูกไว้ แต่ไม่ใช่ Enums อย่างไรก็ตาม tuple ที่ถูกผูกไว้ใด ๆ จะต้องนับจำนวนด้วยวิธีการที่มีสติด้วยการเพิ่มองค์ประกอบสุดท้ายจากนั้นล้อมรอบเมื่อมันไปถึง maxBound
การเปลี่ยนแปลงนี้อาจเกี่ยวข้องกับการเพิ่มpredBและ / nextBหรือสิ่งที่คล้ายกันเพื่อ จำกัด สำหรับวิธีที่ปลอดภัย / วนรอบเพื่อสำรวจผ่านค่า Enum ในกรณีนี้toEnum 0 :: (...)จะเท่ากับ(toEnum 0, toEnum 0, ...) :: (...)
Double/ Floatและทุกประเภทที่คล้ายกันดำเนินการEnumต่อไปพวกเขาก็ให้และsucc = (+ 1) fromEnum = truncateจริง ๆ แล้ววิธีการของ Haskell ทำให้เข้าใจได้จากมุมมองที่เป็นประโยชน์เช่นเดียวกับ [0, 0.5 .. ] และสิ่งที่คล้ายกันก็ใช้งานไม่ได้ดังนั้น Haskell จึงไม่ต้องกังวลเกี่ยวกับความสามารถในการนับเมื่อมาถึง Enums
succ (+1)นั่นคือแปลกเพราะDoubleและFloatไม่ได้มีความแม่นยำที่ไม่มีที่สิ้นสุดและทำให้มีนับ - succจะได้รับการกำหนดให้เป็น 1 ULP