Документ "Система F с принуждением к равенству типов" от Sulzmann, Chakravarty и Peyton Jones иллюстрирует перевод Haskell newtype
в System FC со следующим примером
newtype T = MkT (T -> T)
Как я понимаю, при запрете unsafePerformIO
единственными возможными значениями этого типа являются MkT id
и MkT undefined
из-за параметричности. Мне любопытно, есть ли некоторые фактические применения для этого (или аналогичного) определения.