LINUX.ORG.RU

История изменений

Исправление qnikst, (текущая версия) :

Только разбивая на файлы модули. Ну это слегка вырожденый случай, я подозреваю, что ответ это какой-нибудь ProcessName, где data ProcessName = P1 Pid | P2 Host Name | P3 Name, или какие там варианы в erlang.

Более печально, что из имен полей генерируются аксессоры, а это значит, что в рамках одного модуля имена полей должны быть уникальны (кроме случая если они в одном типа данных), т.е.

data Person = Person {name :: String, ..}
            | VirtualPerson { name :: String, .. } -- можно

data Elf = Elf { name :: String, ..} -- уже нельзя

в итоге решают всякими префиксами, что выглядит убого. Есть правда https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields но пока не смержили, обещались к 7.10..

Исходная версия qnikst, :

Только разбивая на файлы модули. Ну это слегка вырожденый случай, я подозреваю, что ответ это какой-нибудь ProcessName, где data ProcessName = P1 Pid | P2 Host Name | P3 Name, или какие там варианы в erlang.

Более печально, что из имен полей генерируются аксессоры, а это значит, что в рамках одного модуля имена полей должны быть уникальны (кроме случая если они в одном типа данных), т.е.

data Person = Person {name :: String, ..}
            | VirtualPerson { name :: String, .. } -- можно

data Elf = Elf { name :: String, ..} -- уже нельзя

в итоге решают всякими префиксами, что выглядит убого. Есть правда https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields но пока не запилили.