Где поставить код ответственным с извлечением значения из различных функторов - PullRequest
0 голосов
/ 05 ноября 2018

Учитывая функтор и конкретный способ, которым вы хотите развернуть его значение, есть ли предопределенный класс типов, который вы должны реализовать для unwrap it?

Например, учитывая тип: data X = X Int Int где я могу специализировать unwrapping из Maybe X?

Допустим, у меня есть a = Just (X 2 3), и я хочу unwrap это по-своему:

(Just 2 3)-> 2^3
Nothing -> 0

Но я также хочу использовать тот же метод / интерфейс для unwrap другого типа, например Maybe (Int,Int), например:

Just (x, y) -> x + y
Nothing -> 0

Вопрос больше в организации:

Есть ли метод класса типов, в котором я могу реализовать развертывание Maybe X, Maybe Y, Either Z, Either K и т. Д .?

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

...