Una frase que he notado recientemente es el concepto de estilo "sin puntos" ...
Primero, estaba esta pregunta, y también esta .
Entonces, descubrí aquí que mencionan "Otro tema que puede valer la pena discutir es el desagrado de los autores por el estilo libre de puntos".
¿Qué es el estilo "sin puntos"? ¿Alguien puede dar una explicación concisa? ¿Tiene algo que ver con el curado "automático"?
Para tener una idea de mi nivel, he estado aprendiendo Scheme por mí mismo y he escrito un intérprete de Scheme simple ... Entiendo lo que es el currying "implícito", pero no conozco ningún Haskell o ML.
functional-programming
coding-style
scheme
pointfree
Paul Hollingsworth
fuente
fuente
Respuestas:
Solo mira el artículo de Wikipedia para obtener tu definición:
Ejemplo de Haskell:
Convencional (especifica los argumentos explícitamente):
Sin puntos (
sum
no tiene argumentos explícitos, es solo un pliegue que+
comienza con 0):O incluso más simple: en lugar de
g(x) = f(x)
, podría simplemente escribirg = f
.Entonces sí: está estrechamente relacionado con el curry (u operaciones como la composición de funciones).
fuente
sum (x:xs) ...
lugar desum sum (x:xs) ...
?El estilo sin puntos significa que los argumentos de la función que se define no se mencionan explícitamente, que la función se define mediante la composición de funciones.
Si tiene dos funciones, como
y si desea combinar estas dos funciones en una que calcule
x*x+1
, puede definirla como "punto completo" así:La alternativa libre de puntos sería no hablar del argumento
x
:fuente
Una muestra de JavaScript:
Referencia
fuente
El estilo sin puntos significa que el código no menciona explícitamente sus argumentos, aunque existen y se están utilizando.
Esto funciona en Haskell debido a la forma en que funcionan las funciones.
Por ejemplo:
devuelve una función que toma un argumento, por lo tanto, no hay razón para escribir explícitamente el argumento a menos que usted también lo desee.
fuente
myShow = show
. Hay más sobre esto en la wiki de HaskellAquí hay un ejemplo en TypeScript sin ninguna otra biblioteca:
Puede ver que el estilo sin puntos es más "fluido" y más fácil de leer.
fuente
this.moreThan(10)
no es una función con nombre, es una función curry, así como una función que implícitamente (por lo tanto, libre de puntos) tomarátransaction
como entrada.