Equivalencia desde Kotlin
Comportamiento como valor
DirectaF# define funciones con let y las trata como valores. La aplicación de argumentos se escribe con espacios y el operador de tubería permite leer una transformación de izquierda a derecha.
Referencia Kotlin: Declarar una operación reutilizable y recibir otra operación como valor.
- Mecanismo
- Un enlace
letque produce una función; la aplicación parcial y las funciones son centrales en el lenguaje. - Idea conservada
- La transformación se recibe como valor y se invoca dos veces sobre el mismo argumento; quien la declara no necesita conocer
applyTwice. - Riesgo de diseño
- Agregar paréntesis y comas como en C# o Kotlin, cambiando la forma de aplicación esperada.
- Recomendación
- Empieza con funciones pequeñas y curried; usa tuplas solo cuando los argumentos forman un valor compuesto.
- Convención del curso
- Empieza con funciones pequeñas y curried; usa tuplas solo cuando los argumentos forman un valor compuesto.
- Mecanismo del lenguaje
- Enlaces
letcon funciones curried de primera clase.
Diferencias relevantes
- La aplicación de función no usa paréntesis ni comas entre argumentos como regla principal.
- Las funciones suelen estar curried, lo que habilita aplicación parcial de forma natural.
La transformación se recibe primero y se aplica dos veces con una tubería.
fun applyTwice(
value: Int,
transform: (Int) -> Int,
): Int = transform(transform(value))
val result = applyTwice(3) { it + 1 } // 5let applyTwice transform value =
value |> transform |> transform
let result = applyTwice (fun number -> number + 1) 3 // 5Otra forma de recibir comportamiento: un predicado para filtrar una lista.
let keep predicate values = values |> List.filter predicate