Учитывая функтор и конкретный способ, которым вы хотите развернуть его значение, есть ли предопределенный класс типов, который вы должны реализовать для 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
и т. Д .?
Или мне нужно предоставить разгруппированные (не экземпляры метода класса типов) для каждого типа, который я хочу развернуть из функтора?