Dudas sobre interpretacion de funciones currificadas

Re: Dudas sobre interpretacion de funciones currificadas

de Alberto Pardo -
Número de respuestas: 0
Hola,

En el caso de los operadores binarios infijos, como <, <=, +, *, ++ y otros no es necesario usar backquotes, ellos son por definición infijos. Por lo tanto podemos escribo 2 < 3, 2 + 3, etc. Luego podemos usarlos para definir secciones como (2+), (+3), (2>), (>0), etc. Los operadores infijos los podemos usar como funciones prefijas currificadas escribiéndolos entre paréntesis. Por ejemplo (>) :: Ord a => a -> a -> Bool.

Al definir una sección saturamos uno de sus parámetros. O sea, escribimos (<2) o (+1). El resultado de hacer eso es una función en un argumento. En el caso de (<2) estamos saturando las segunda posición del < y por lo tanto cuando aplicamos el argumento ocupará la primera posición (la no saturada). Por ejemplo, (<2) 3 da como resultado 3 < 2. Esto es porque escribir (<2) es equivalente a \x -> x < 2. 

Dada una función f :: a -> b -> c, al escribirla como infija (`f`) sus dos parámetros posicionales van a respetar el orden de los parámetros de la función f, o sea, el izquierdo será de tipo a y el derecho de tipo b. Puedo entonces armar secciones como (x `f`) o (`f` y). 

Saludos,
Alberto.