Комментарии 8
Так а в чем функциональность описанного подхода? Хотелось бы увидеть реализацию какой-нибудь простой монады типа Maybe или List и пример того, как с ней удобно работать, чтобы в этом был смысл.
Для котлина есть https://arrow-kt.io от 47 Degrees, в котором даже синтаксический сахар для монадических операций сделан, если я правильно помню.
Функциональное программирование это же не только «моноиды в категориях эндофункторов». Возможно я напишу еще пару статей где разберу их.
В чем функциональность? По сути вся моя статья о функциях высшего порядка и основах того, что нам на практике дает лямбда-исчисление. Я больше затрагивал практические моменты, так что это действительно могло быть не столь очевидно.
В чем функциональность? По сути вся моя статья о функциях высшего порядка и основах того, что нам на практике дает лямбда-исчисление. Я больше затрагивал практические моменты, так что это действительно могло быть не столь очевидно.
Было любопытно почитать, но судя по всему, автор исходил из того, что читатели — практики, поэтому скажем мне где-то на уровне областей видимости некоорые вещи были не очевидны.
>let, run, with, apply, и also. Знакомые слова?
Нет, не знакомые. В принципе, идея понятна, но примеров в этом месте не хватило.
>let, run, with, apply, и also. Знакомые слова?
Нет, не знакомые. В принципе, идея понятна, но примеров в этом месте не хватило.
Действительно, мне стоило разобрать это более детально, но слишком много писать про них в этой статье тоже не хотелось.
Дело в том, что я думал написать несколько статей и функции области видимости больше подходят под тему немножко другую, нежели просто использование функций высшего порядка, дальше которых я тут заходить не хотел.
Дело в том, что я думал написать несколько статей и функции области видимости больше подходят под тему немножко другую, нежели просто использование функций высшего порядка, дальше которых я тут заходить не хотел.
На тему FP есть презентация от мейнтейнера Arrow Kt: youtu.be/0_zatebXMDU
Он как раз реализует Either и демонстрирует монадический синтаксис, который реализовали в библиотеке на основе shift+reset
Он как раз реализует 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 в действии». Статьи на Хабре имеют формат «брифинга», что вызывает недоумение. Впрочем как и авторы языка не сильно стараются его документировать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Функциональный Kotlin. Во имя добра, радуги и всего такого