Hola Guzman,
Tenés un problema de tipado que se origina de un problema de precedencia de operadores. La aplicación de funciones tiene máxima precedencia por lo que la definición que escribiste equivale a haber escrito:
cuentas x = (2`div`) . (8-) . (2*) . x+3
o sea, como final de la secuencia de composiciones tenés una expresión de tipo Integer y no una función de tipo Integer -> Integer. Para arregarlo hay dos opciones: una es parentizar la secuencia de composiciones, otra es usar el operador $ que se define como: f $ x = f x. Así quedan las dos opciones:
cuentas x = ((2`div`).(8-).(2*).(+3)) x
cuentas x = (2`div`).(8-).(2*).(+3) $ x
Esto se puede ver ya en la definición de la composición: (f . g) x = f (g x)
Hay una tercera opción que es aplicar lo que se conoce como eta-reducción. Cuando uno tiene una definición de la forma f x = g x donde x no ocurre en g entonces la definición se puede escribir como f = g. En el caso de cuentas esto queda como:
cuentas = (2`div`).(8-).(2*).(+3)
o sea, se define cuentas directamente como la composición de las secciones. No se precisa hablar del parámetro x n la definición.
Respecto a las secciones, fijate si (2`div`) es lo que se pide.
Saludos,
Alberto.
Tenés un problema de tipado que se origina de un problema de precedencia de operadores. La aplicación de funciones tiene máxima precedencia por lo que la definición que escribiste equivale a haber escrito:
cuentas x = (2`div`) . (8-) . (2*) . x+3
o sea, como final de la secuencia de composiciones tenés una expresión de tipo Integer y no una función de tipo Integer -> Integer. Para arregarlo hay dos opciones: una es parentizar la secuencia de composiciones, otra es usar el operador $ que se define como: f $ x = f x. Así quedan las dos opciones:
cuentas x = ((2`div`).(8-).(2*).(+3)) x
cuentas x = (2`div`).(8-).(2*).(+3) $ x
Esto se puede ver ya en la definición de la composición: (f . g) x = f (g x)
Hay una tercera opción que es aplicar lo que se conoce como eta-reducción. Cuando uno tiene una definición de la forma f x = g x donde x no ocurre en g entonces la definición se puede escribir como f = g. En el caso de cuentas esto queda como:
cuentas = (2`div`).(8-).(2*).(+3)
o sea, se define cuentas directamente como la composición de las secciones. No se precisa hablar del parámetro x n la definición.
Respecto a las secciones, fijate si (2`div`) es lo que se pide.
Saludos,
Alberto.