LINUX.ORG.RU

Haskell, записи


0

0

Когда создаётся новый тип данных, к примеру:

data Type1 = Type1 { first :: int, second :: int}

data Type2 = Type2 { first :: int, second :: int}

Происходит перекрытие имён first и second. Если способ это избежать? Есть ли возможность в принципе избежать создание функций доступа, дабы доставать значения исключительно через pattern matching.

Имеется в виду pattern matching по имени поля, а не по положению.

f(Type1 {first = a}) = a

PS Не int а Int

ryukzak
() автор топика

> Если способ это избежать?

Разнести по разным модулям.

Miguel ★★★★★
()

Дак вроде же обычно так пишут?

data Type1 = Type1 { type1First :: Int, type1Second :: Int}
data Type2 = Type2 { type2First :: Int, type2Second :: Int}

l5k
()

Для GHC можно использовать расширение Record field disambiguation, включается флагом -XDisambiguateRecordFields.

Begemoth ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.