Ответ 1
Хорошая новость: Да, есть способ определить новый экземпляр внутри GHCi.
Плохая новость: В настоящий момент первым шагом в этом является "установка моментального снимка разработки GHC".
Это довольно очевидный недостаток функциональности в GHCi довольно долгое время. Не было присущей ему причины отсутствовать, но я предполагаю, что это было несколько сложно реализовать, и поэтому оно было отменено.
Однако, кажется, что с версии 7.4.1 теперь доступно:
В приглашении GHCi вы также можете ввести любую декларацию Haskell на верхнем уровне, включая данные, тип, тип newtype, класс, экземпляр, вывод и внешние декларации. Например:
Prelude> data T = A | B | C deriving (Eq, Ord, Show, Enum) Prelude> [A ..] [A,B,C] Prelude> :i T data T = A | B | C -- Defined at <interactive>:2:6 instance Enum T -- Defined at <interactive>:2:45 instance Eq T -- Defined at <interactive>:2:30 instance Ord T -- Defined at <interactive>:2:34 instance Show T -- Defined at <interactive>:2:39
Думаете ли вы, что сейчас это стоит того, что вам нужно установить версию GHC без релиза.