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

Примененима ли теория категорий в повседневном программировании?

Я программирую на Scala и очень часто использую монады. И практическая польза от них понятна и огромна. Option(Maybe) избавляет от проблем с null-ями, Either позволяет элегантно обрабатывать ошибки, Future позволяет писать асинхронный код просто, List дает удобно работать со списками. И так далее. То есть практическая польза проста для понимания. Я много раз натыкался на статьи по теории категорий и прочитал их, наверное, несколько десятков. Но так и не понял, какую практическую пользу можно получить от категорий, если ты не занимаешься доказательством теорем.

Можете дать ссылку на статьи, просто объясняющие это, или привести короткий пример практического применения теории категорий?
  • Вопрос задан
  • 2650 просмотров
Подписаться 10 Оценить Комментировать
Ответ пользователя denisftw К ответам на вопрос (4)
denisftw
@denisftw
Ну, самый очевидный пример - это использование готовых абстракций из ТК для интеграции некоторого кода с другими библиотеками или разных библиотек друг с другом. Я об этом немного более подробно пишу тут:

appliedscala.com/blog/2016/fp-in-java8-kotlin-scala

Если нужен конкретный пример, то вот возьмите, например, библиотеку Monix. Эта библиотека помимо всего прочего предагает такой тип как Task - что-то вроде Future, но "ленивый". Если некий код работает с Future'ми, то запихать в него Task конечно можно, но это потребует дополнительных усилий. А вот если этот код работает с type class'ом Monad (например в редакции от Cats), то проблем не будет никаких, так как и для Future и для Task можно найти/написать самому соответствующий инстанс. Здесь на самом деле используется не ТК в чистом виде, а сочетание category theory + type classes, но в Scala они всегда идут вместе.
Ответ написан
Комментировать