Articles of funcional progtwigción

Método de ejecución en el object kotlin

Soy bastante nuevo para Kotlin y aún estoy tratando de entenderlo. Digamos que tengo esta interfaz: interface A{ fun add() } Tengo una function y algo que implementa esta interfaz: val calc = /*Something that implements interface A*/ fun op(func:()->Unit){ //Some code } Finalmente, en mi function principal, tengo esto: fun main(args:Array<String>){ op(A::add) } ¿Hay […]

¿Hay una mejor manera de filter nulo en una list?

Lo hago para filtrar la list de valor nulo: val myList: List<Any?> = […] myList.filter { it != null }.map { it!! } myList.get(0).xxx // don't need to write "?." Si no agrego el map , la list no se convierte en List<…> . ¿Hay una manera más elegante de hacer eso?

¿Cómo inyectar con IoC en las funciones de nivel superior de Kotlin? ¿Incluso uso contenedores de IoC?

Estoy teniendo problemas para seguir FP. Cuando la gente dice "estilo más idiomático", debo entender que: el 99% de las libs de Java no son aplicables para el estilo idiomático de FP para Kotlin y Scala, ¿verdad? Bueno, necesito Spring Boot para un arranque rápido con Vaadin. Entonces necesito inyectar algunos frijoles. package com.x.ui import […]

Cómo usar el tipo recursivo en Kotlin

Lo que quiero hacer es algo como esto fun <F, A, R> recur(f: (F, A) -> R, arg: A): R = f(f, arg) where F = (F, A) -> R ¿Cómo puedo escribir esta function en Kotlin?

¿Cómo se usa `filter` en la instancia de Map en Kotlin?

Veo que #filter está definido en Map , pero no puedo descifrar cómo usarlo. ¿Alguien quiere compartir un ejemplo? Tengo una instancia TreeMap profundamente anidada ( TreeMap<String, Map<String, Map<*, *>>> ) y quiero filter/find la primera (que es la única en el dominio) key de nivel superior que tiene una ciertas características asociadas con algo […]

Cambia una list para mapear en Kotlin mientras personalizas esta conversión

var listOfNums = listOf(1,9,8,25,5,44,7,95,9,10) var mapOfNums = listOfNums.map { it to it+1 }.toMap() println(mapOfNums) resultado {1=2, 9=10, 8=9, 25=26, 5=6, 44=45, 7=8, 95=96, 10=11} mientras necesito este resultado, agrega contenidos del siguiente elemento al elemento actual, mientras que necesito asignar el elemento actual al siguiente elemento mi resultado meta {1=9, 8=25, 5=44, 7=59, 9=10}

Kotlin: forma idiomática de llamar (Int, Int) -> Int con un par <Int, Int>?

fun sum(a: Int, b: Int) = a + b val x = 1.to(2) Estoy buscando: sum.tupled(x) , o sum(*x) Por supuesto, ninguna de las anteriores comstack con Kotlin 1.1.3-2. Entonces, ¿estoy atascado con la sum(x.first, x.second) ? Editar : Generalizando sobre las respuestas útiles, creo que esto es lo más cercano por ahora: fun <P1, […]

Progtwigción funcional: cómo continuar el context para una cadena de reglas de validation

Tengo un set de funciones (reglas) para la validation que toman un context como parámetro y devuelven "Bien" o un "Error" con un post. Básicamente, estos podrían devolver un tipo Maybe (Haskell) / Optional (Java). A continuación, me gustaría validar las properties de una Fruit (el context) y devolver un post de error si la […]