ในบทความของ Eric Lippert เกิดอะไรขึ้นกับสัญลักษณ์ของฮังการี? เขากล่าวว่าจุดประสงค์ของสัญกรณ์ฮังการี (ประเภทที่ดี) คือการ
ขยายแนวคิดของ "ประเภท" เพื่อรวมข้อมูลเชิงความหมายนอกเหนือจากข้อมูลการเป็นตัวแทนจัดเก็บข้อมูล
ตัวอย่างง่ายๆจะนำหน้าตัวแปรที่แสดงถึงพิกัด X ด้วย "x" และตัวแปรที่แทนพิกัด Y ด้วย "y" โดยไม่คำนึงว่าตัวแปรเหล่านั้นเป็นจำนวนเต็มหรือลอยหรืออะไรก็ตามดังนั้นเมื่อคุณเขียนโดยไม่ตั้งใจxFoo + yBar
รหัสดูผิดอย่างชัดเจน
แต่ฉันได้อ่านเกี่ยวกับระบบประเภทของ Haskell ด้วยและดูเหมือนว่าใน Haskell เราสามารถทำสิ่งเดียวกันให้สำเร็จได้ (เช่น "ขยายแนวคิดประเภทที่จะครอบคลุมข้อมูลความหมาย") โดยใช้ประเภทจริงที่คอมไพเลอร์จะตรวจสอบคุณ ดังนั้นในตัวอย่างข้างต้นxFoo + yBar
ใน Haskell จะล้มเหลวในการรวบรวมถ้าคุณออกแบบโปรแกรมของคุณอย่างถูกต้องเนื่องจากมันถูกประกาศว่าเป็นชนิดที่เข้ากันไม่ได้ ดูเหมือนว่าระบบประเภทของ Haskell สนับสนุนการตรวจสอบเวลาแบบคอมไพล์ได้อย่างมีประสิทธิภาพเทียบเท่ากับสัญลักษณ์ของฮังการี
ดังนั้น Hungarian Notation เป็นเพียงตัวช่วยแบนด์สำหรับภาษาโปรแกรมที่ระบบประเภทไม่สามารถเข้ารหัสข้อมูลความหมายได้หรือไม่? สัญกรณ์ฮังการีหรือเสนอบางสิ่งบางอย่างนอกเหนือจากสิ่งที่ระบบชนิดคงที่เช่น Haskell สามารถนำเสนอ?
(แน่นอนฉันกำลังใช้ Haskell เป็นตัวอย่างฉันแน่ใจว่ามีภาษาอื่นที่มีระบบการพิมพ์ที่มีความหมายคล้ายกัน (rich? strong?) แม้ว่าฉันจะไม่ได้เจอก็ตาม)
เพื่อความชัดเจนฉันไม่ได้พูดถึงคำอธิบายประกอบชื่อตัวแปรด้วยชนิดข้อมูลแต่มีข้อมูลเกี่ยวกับความหมายของตัวแปรในบริบทของโปรแกรม ตัวอย่างเช่นตัวแปรอาจเป็นจำนวนเต็มหรือลอยหรือสองหรือยาวหรืออะไรก็ตาม แต่บางทีความหมายของตัวแปรคือมันเป็นพิกัด x ที่สัมพันธ์กันวัดเป็นนิ้ว นี่คือข้อมูลประเภทหนึ่งที่ฉันกำลังพูดถึงเกี่ยวกับการเข้ารหัสผ่านรูปแบบฮังการี (และผ่านประเภท Haskell)