Где поставить код ответственным с извлечением значения из различных функторов

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

Например, учитывая тип: 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, так далее.?

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

0 ответов

Другие вопросы по тегам