In F # muss das rec
Schlüsselwort verwendet werden. In Haskell muss nicht explizit angegeben werden, ob eine bestimmte Funktion rekursiv ist oder nicht.
Angesichts der Rolle der Rekursion in der funktionalen Programmierung erscheint mir das F # -Design eher seltsam. Handelt es sich um eine gute Entscheidung für das Sprachdesign oder gibt es sie nur aus historischen Gründen oder aufgrund einer Implementierungsbeschränkung?
quelle
Diese Frage wurde auf SO beantwortet und enthält einen starken historischen Hintergrund für die Verwendung von "rec".
Hier ist das wichtige Zitat für die Nachwelt:
quelle
Ein Rekursiv
let
definiert eine wesentlich kompliziertere Semantik als eine normale. Aus Gründen der Einfachheit und des übersichtlichen Sprachdesigns gibt es daher einen guten Grund, beides, genauso wie getrenntlet
,let*
undletrec
im Schema zu haben.Einfach
let x = y in z
ist gleichbedeutend mit((fun x -> z) y)
. Ein rekursiver Let ist viel komplizierter und kann die Verwendung eines Festkomma-Kombinators beinhalten.quelle