Как стать автором
Обновить

Комментарии 8

Так а в чем функциональность описанного подхода? Хотелось бы увидеть реализацию какой-нибудь простой монады типа Maybe или List и пример того, как с ней удобно работать, чтобы в этом был смысл.

Для котлина есть https://arrow-kt.io от 47 Degrees, в котором даже синтаксический сахар для монадических операций сделан, если я правильно помню.

Функциональное программирование это же не только «моноиды в категориях эндофункторов». Возможно я напишу еще пару статей где разберу их.

В чем функциональность? По сути вся моя статья о функциях высшего порядка и основах того, что нам на практике дает лямбда-исчисление. Я больше затрагивал практические моменты, так что это действительно могло быть не столь очевидно.
Было любопытно почитать, но судя по всему, автор исходил из того, что читатели — практики, поэтому скажем мне где-то на уровне областей видимости некоорые вещи были не очевидны.

>let, run, with, apply, и also. Знакомые слова?
Нет, не знакомые. В принципе, идея понятна, но примеров в этом месте не хватило.
Действительно, мне стоило разобрать это более детально, но слишком много писать про них в этой статье тоже не хотелось.

Дело в том, что я думал написать несколько статей и функции области видимости больше подходят под тему немножко другую, нежели просто использование функций высшего порядка, дальше которых я тут заходить не хотел.
Ну, смотрите — я реально не работаю с котлином, возможно мне по этой причине этот кусок непонятен. Если будете писать — хорошо.
На тему FP есть презентация от мейнтейнера Arrow Kt: youtu.be/0_zatebXMDU
Он как раз реализует Either и демонстрирует монадический синтаксис, который реализовали в библиотеке на основе shift+reset
Пример кода
suspend fun main() {
    val result1: Either<String, Int> = Right(1)
    val result2: Either<String, Int> = Right(1)
    val result3: Either<String, Int> = Right(1)
    val composition: Either<String, Int> = 
        either {
           val a = result() // Биндинг через оператор invoke
           val b = result()
           val c = result()
           a + b + c
        }
    println(composition)
}

Более-менее понять Kotlin и функции высшего порядка, мне как человеку привыкшему видеть код в виде вход-выход, помогла книга «Kotlin в действии». Статьи на Хабре имеют формат «брифинга», что вызывает недоумение. Впрочем как и авторы языка не сильно стараются его документировать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории