โดยทั่วไปแล้วประเภทผลรวมจะมีประโยชน์น้อยกว่าในภาษา OO กระแสหลักเนื่องจากกำลังแก้ไขปัญหาประเภทเดียวกันกับการพิมพ์ย่อย OO วิธีหนึ่งในการดูพวกเขาก็คือพวกเขาทั้งสองจัดการ subtyping แต่ OO คือopen
หนึ่งสามารถเพิ่มประเภทย่อยโดยพลการเพื่อประเภทผู้ปกครองและประเภทผลรวมclosed
คือหนึ่งที่กำหนดล่วงหน้าประเภทย่อยที่ถูกต้อง
ตอนนี้ภาษา OO มากมายรวม subtyping กับแนวคิดอื่น ๆ เช่น structs ที่สืบทอด, polymorphism, การพิมพ์อ้างอิง ฯลฯ เพื่อให้เป็นประโยชน์โดยทั่วไป ผลที่ตามมาก็คือพวกเขามีแนวโน้มที่จะทำงานมากขึ้นในการตั้งค่า (กับคลาสและตัวสร้างและ whatnot) ดังนั้นจึงไม่ควรใช้กับสิ่งต่าง ๆ เช่นResult
s และOption
s เป็นต้นจนกระทั่งการพิมพ์ทั่วไปกลายเป็นเรื่องธรรมดา
ฉันยังบอกด้วยว่าการให้ความสำคัญกับความสัมพันธ์ในโลกแห่งความเป็นจริงที่คนส่วนใหญ่เรียนรู้เมื่อพวกเขาเริ่มเขียนโปรแกรม OO เช่น Dog isa Animal หมายความว่า Integer isa Results หรือ Error isa Result ดูเหมือนคนต่างด้าวเล็กน้อย แม้ว่าความคิดจะคล้ายกันมาก
สำหรับสาเหตุที่ภาษาที่ใช้งานได้อาจต้องการการพิมพ์แบบปิดเพื่อเปิดการพิมพ์เหตุผลหนึ่งที่เป็นไปได้คือพวกเขามักจะชอบการจับคู่รูปแบบ สิ่งนี้มีประโยชน์สำหรับฟังก์ชัน polymorphism แต่ก็ใช้งานได้ดีกับประเภทปิดเนื่องจากคอมไพเลอร์สามารถตรวจสอบได้ว่าการจับคู่ครอบคลุมประเภทย่อยทั้งหมด สิ่งนี้สามารถทำให้ภาษารู้สึกสอดคล้องกันมากขึ้นแม้ว่าฉันจะไม่เชื่อว่าจะมีประโยชน์โดยธรรมชาติ (ฉันอาจเข้าใจผิด)