En F # es necesario usar la recpalabra clave. En Haskell no hay necesidad de decir explícitamente si una función dada es recursiva o no.
Dado el papel de la recursividad en la programación funcional, el diseño de F # me parece bastante extraño. ¿Es una buena decisión de diseño del lenguaje o solo existe por razones históricas o por una restricción de implementación?
fuente

Esta pregunta ha sido respondida en SO e incluye algunos antecedentes históricos sólidos de por qué se usa "rec".
Aquí está la cita importante para la posteridad:
fuente
Un recursivo
letdefine una semántica significativamente más complicada que una normal. Por lo tanto, en aras de la simplicidad y el diseño de lenguaje limpio, hay una buena razón para tener ambos, lo mismo que tener separadoslet,let*yletrecen Scheme.Simple
let x = y in zes equivalente a((fun x -> z) y). Un let recursivo es mucho más complicado y puede implicar el uso de un combinador de punto fijo.fuente