В Haskell при определении типа данных вы можете автоматически выбирать в некоторых случаях, но могу ли я отложить автоматическое получение, возможно, даже положить его в другая библиотека?
Вот пример:
Автоматическое выведение в Haskell - это экономия в реальном времени!
module MoneyModule where
data Money = Money Int
deriving Show
Теперь я хочу использовать MoneyModule
, но мне также нужен экземпляр Read
для Money
:
module ExternalModule where
instance Read Money where
read = error "Can't this be done automatically instead?"
Но я бы предпочел, чтобы он был получен автоматически, и я знаю, что ghc мог бы сделать, если бы только автор MoneyModule автоматически создал экземпляр Read
.
Я знаю, что:
- Лучше исправить проблему в фактическом
MoneyModule
, исправив ее отсутствующим экземпляром. - Чтобы считать, что у детей есть сироты. Имена экземпляров предпочтительно помещаются в модуль, где либо тип типа, либо данные тип был определен.
В моем случае я не могу следовать лучшим методам, поскольку класс типа не связан к типу данных. Я сомневаюсь, что модуль класса типа или модуль типа данных хочет удерживать экземпляр, поэтому я создаю третью библиотеку, потому что в некоторых приложениям требуется объявление экземпляра.