Soy un novato en Haskell y espero que esta pregunta no es tonta.
He visto tanta ejemplo de que cuando estoy teniendo una lista, yo soy capaz de igualar y se unen "composición el elemento de la lista para cada variable:
listSizeDesc :: [a] -> String
listSizeDesc [] = "Emtpy"
listSizeDesc (x:xs) = "Something inside"
Sin embargo, he tratado de hacer algo como:
foo :: Int -> String
foo 0 = "Zero"
foo (n - 1) = "next number is " ++ show n
No funciona.
A mí me parece que ambos (n-1) y (x:xs) describir cómo el argumento es "creado" y enlazar el "componente" para una discusión. Es la manera en la Lista de igualada especialmente diseñado para la facilidad de la recursividad? Coz que me parece esta coincidencia / argumento de unión de la lógica no se aplica a otras funciones, excepto (:).