Когда создаётся новый тип данных, к примеру:
data Type1 = Type1 { first :: int, second :: int}
data Type2 = Type2 { first :: int, second :: int}
Происходит перекрытие имён first и second. Если способ это избежать? Есть ли возможность в принципе избежать создание функций доступа, дабы доставать значения исключительно через pattern matching.