Почему на Хаскеле нет записей со структурной типизацией?

Я слышал, что Хаскелла описывают как структурную типизацию. Записи являются исключением из этого, хотя, как я понимаю. Например, foo нельзя вызывать с чем-то типа HRec2, хотя HRec и HRec2 только номинально различаются по своим полям.

data HRec = HRec { x :: Int, y :: Bool }
data HRec2 = HRec2 { p :: Int, q :: Bool }

foo :: HRec -> Bool

Есть ли какое-то объяснение отклонению распространения структурной типизации на все, включая записи?

Существуют ли статически типизированные языки со структурной типизацией даже для записей? Есть ли какие-то дебаты по этому поводу, о которых я могу прочитать для всех статически типизированных языков в целом?

9
задан user782220 12 January 2014 в 05:39
поделиться