Задать вопрос

Зачем использовать functor?

Спасибо за внимание! Подскажите, в чем преимущество функтора, ведь он просто применят функцию на значении хранящемся в объекте? Мы могли делать это и раньше, без объекта (новичок в ФП). Не ругайте, если вопрос показался тупым :)
  • Вопрос задан
  • 338 просмотров
Подписаться 3 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Функтор, в контексте функионального программирования — это интерфейс (или тайпкласс), который может быть реализован для разных типов. Чтобы тип мог имплементировать функтор, он должен иметь кайнд * -> * (то есть это должен быть дженерик с одним параметром) и для него должна быть реализована функция map:

map :: Functor f => (a -> b) -> (f a -> f b)

Имя и сигнатура могут отличаться в зависимости от реализации, например в Haskell эта функция называется fmap, а в Fantasy Land сигнатура выглядит так:

map :: Functor f => f a ~> (a -> b) -> f b

Также для функции/метода map должны выполняться определённые законы, не буду их копировать сюда, просто оставлю ссылку: https://github.com/fantasyland/fantasy-land#functor

Несколько примеров функторов:
  • Arraymap применяет функцию к каждому элементу массива.
  • Futuremap применяет функцию к значению когда оно зарезолвится.
  • Maybemap применяет функцию к значению, если оно существует, иначе возвращает Nothing.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:47
1800 руб./в час
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект