1
พิมพ์บทบาทและพฤติกรรมที่ทำให้เกิดความสับสนโดย `coerce '
ฉันมีชนิดId aและฉันพยายามที่จะป้องกันไม่ให้ตั้งใจบีบบังคับเช่นการไปยังId DoubleId Int หากฉันเข้าใจบทบาทพิมพ์อย่างถูกต้องสิ่งต่อไปนี้ไม่ควรรวบรวม {-# LANGUAGE RoleAnnotations #-} import Data.Coerce (coerce) type role Id nominal newtype Id a = Id String badKey :: Id Int badKey = coerce (Id "I point to a Double" :: Id Double) น่าเสียดายที่มัน: Prelude> :load Id.hs [1 of 1] Compiling Main ( Id.hs, interpreted …