Функция монад приняла результат работы функции тейкиф, я считаю это монада
ну нет же, там цепочка. разве суть не в том, что я преобразую данные последовательными изменениями ?
я правда не знаю как это сформулировать. там может быть всё что угодно. например если в списке больше 5 элементов, то оно отдаст тебе последний, а иначе первый
fun List<*>.monad() = takeIf { it.size > 5 }?.let { it.last() } ?: it.firstOrNull()
listOf().monad() // null
listOf(1).monad() // 1
listOf(1, 2, 3, 4, 5, 6) // 6
поправить можете, если что не так ?