История изменений
Исправление 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 но пока не запилили.