Sieht man die Syntax, wirkt diese im Vergleich zu anderen Sprachen wie C++ sehr komplex.Wirklich? Ist doch eher Ansichtssache und wenig neutral. Ich bin mir sogar ziemlich sicher, dass C++ komplizierter zu parsen ist als OCaml oder eben F#, da die Syntax letzterer Sprachen vereinheitlichter ist. --Eriatarka 18:48, 22. Jan 2006 (CET)
Das sehe ich genauso: ob eine Syntax "komplex wirkt" hängt doch primär vom Vorwissen des Betrachters ab; Ein Mathematiker der noch nie C++ verwendet hat wird die formale Struktur von Sprachen der ML-Familie wahrscheinlich recht schnell verstehen, ein halbwegs fundiertes Verständnis von C++ (mit Feinheiten wie templates, virtuellen Basisklassen usw.) dagegen wird er sich kaum an einem Wochenende erarbeiten können.Vorschlag: ich wäre dafür "sehr komplex" durch "wesentlich abstrakter" zu ersetzen. Die Begriffe High-Level (F#) / Low-Level (C++) würden es auch treffen, aber die sind schon wieder wertend. --Nikie 19:34, 16. Jun 2006 (CEST)
Hello World ist als Beispiel nicht gerade erhellend. Das verrät mehr über .net als über F#.Hat jemand ein sinnvolleres Beispiel, das die wichtigsten spezifischen Features von F# aufzeigt?
Ich hab ein paar Beispiele eingefuegt und einige offensichtliche Fehler (OOP, Null-Pointer) ausgebessert.
Im ersten Abschnitt ist schon ein Fehler. Für F# sind das keine Variablen sondern Identifier. Dieser Unterschied sollte nicht so einfach unter den Teppich gekehrt werden.
Das sehe ich genau so. Allerdings habe ich gehört, das dies Funktionen sind, die immer den gleichen Wert zurückgeben. Variablen ist aber auf jeden fall falsch.(nichtsignierter Beitrag vonPdelvo (Diskussion | Beiträge)19:42, 10. Apr. 2009 (CEST))
Die Dinger heißen Bindungen und dann ist gut. Aber Funktionen, die immer denselben Wert zurückgeben. Naja... Öhm, Quelle?(nichtsignierter Beitrag von92.231.137.213 (Diskussion)18:13, 30. Mai 2013 (CEST))
Habe den folgenden Absatz rausgenommen, weil er einfach falsch war. Leider habe ich das erst durch Ausprobieren gemerkt, nachdem ich ihn vorher schon umgestellt hatte. Die falsche Behauptung war aber schon länger im Artikel.
let deklariert werden::letpi=3.1415927:letpi=10.0// => Compiler-Fehler:
In Wirklichkeit kann man den Bezeichner durchaus mehrfach hinterenander verwenden, das nennt man "Shadowing", es compiliert fehlerlos. Die Unterschiede zu einer normalen Zuweisung könnte man hier erklären, aber das würde über das Level hinausgehen, auf dem der Artikel sich an der Stelle befindet. Bei einer schnellen Einführuing in die Sprache verwirrt das m.E. eher. Vielleicht hat ja jemand Lust, es korrekt und hilfreich zu formulieren und wieder reinzunehmen. --HalvarMA (Diskussion)10:09, 13. Jun. 2020 (CEST)
Es wäre noch dientlich wenn in der Einleitung zu diesem Artikel etwas zum Anwendungsfeld geschrieben wird. Ich selber habe leider keine Ahnung von F# und anderen funktionalen Sprachen und möchte gerne wissen, wo diese zur Anwendung kommen. Für welche Problemstellung wird diese (und ähnliche Sprachen) verwendet? --DataCore11:03, 30. Jul. 2009 (CEST)
Da ich mich gerade ein bisschen in F# einarbeite, und in meiner anfänglichen Naivität F# (nur) als eine Art Microsoft-OCaml sehe, habe ich gerade anhandOCaml-Tutorial (deutsche Übersetzung) festgestellt, dass F# im Gegensatz zu OCaml scheinbar doch Operatoren-Überladung unterstützt (bitte korrigieren, wenn diese Unterstellung so nicht zutrifft!):
Im OCaml-Tutorial steht, dass in OCaml fürs Addieren von Floatzahlen der Operator "+." und für Integer der Operator "+" zu verwenden sei. In F# hingegen gibt es offenbar gar kein "+.", dafür funktioniert dort das simple "+" sowohl mitfloats als auch mit Integern. Lediglich der Ausdruck "1 + 2.0" wird wegen Typunterschiedlichkeit der beiden Operanden (wie zu erwarten) als fehlerhaft moniert.
Vermutlich gibt es noch einige Unterschiede mehr. Vielleicht mag jemand mit mehr Sprachwissen die (gravierendsten) Unterschiede im Artikel aufzählen.