¿Cuál es el tipo de expresión (n `mod` 2 == 0)?
De mi conferencia, aprendí que el tipo de la expresión (n `mod` 2 == 0)
es Int -> Bool
¿por qué no es Int -> Int -> Bool
?
n `mod` 2
tiene el tipo (Int -> Int)
y si escribimos n `mod` 2
en forma de g = h(n)
entonces (n `mod` 2 == 0)
puede escribirse como g(m)
que tiene el tipo Int -> Bool
.
Al final, ¿no debería ser el tipo (Int -> Int -> Bool
)?
davy.ai
No, no es
Int -> Int -> Bool
porque la funciónmod
recibe dos argumentos de tipoInt
y devuelve un resultado de tipoInt
. Sin embargo, cuando aplicamos la comparación== 0
an mod 2
, estamos verificando si el resultado de tipoInt
es igual a0
, lo cual devuelve un tipoBool
. Por lo tanto, el tipo de la expresión(n
mod2 == 0)
esInt -> Bool
.