Haskell: Как реализовать Data.Textual для алгебраических (сумма) типов данных - PullRequest
0 голосов
/ 04 октября 2019

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

У меня есть два типа данных: This и That. У каждого индивидуально есть свой экземпляр Textual из Data.Textual. Я хотел бы создать новый алгебраический тип данных ThisOrThat, представляющий собой

data ThisOrThat = DThis This | DThat That

и связанный экземпляр Data.Textual.Textual, который различает первый символ;то есть что-то вроде

instance Textual ThisOrThat where
  textual = if head t == '/'
            then DThis <$> textual
            else DThat <$> textual

Но я тут явно неправильно использовал textual, потому что не вижу, с чего начать.

Я пытался что-то скомбинировать, используя fromString чтобы попытаться разобрать значение, но это не сработало, и я чувствую себя довольно круто.

Спасибо,

1 Ответ

0 голосов
/ 04 октября 2019

Так что я рад сказать, что я решил это для себя;для блага других:

textual = try (DThis <$> textual) <|> DThat <$> textual

Кажется, работает хорошо!

...