Why is it that functions in F# and Ocaml (and possibly other languages) are not by default recursive?
In other words, why did the language designers decide it was a
Some guesses:
let
is not only used to bind functions, but also other regular values. Most forms of values are not allowed to be recursive. Certain forms of recursive values are allowed (e.g. functions, lazy expressions, etc.), so it needs an explicit syntax to indicate this.let
construct is similar to the let
construct in Lisp and Scheme; which are non-recursive. There is a separate letrec
construct in Scheme for recursive let's