<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=F-Sharp</id>
	<title>F-Sharp - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=F-Sharp"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=F-Sharp&amp;action=history"/>
	<updated>2026-05-22T21:27:00Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=F-Sharp&amp;diff=274366&amp;oldid=prev</id>
		<title>imported&gt;Derkoenig: lf, Commonscat mit Helferlein hinzugefügt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=F-Sharp&amp;diff=274366&amp;oldid=prev"/>
		<updated>2026-04-11T22:13:50Z</updated>

		<summary type="html">&lt;p&gt;lf, Commonscat mit &lt;a href=&quot;/index.php?title=Benutzer:Wurgl/8Schwestern&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:Wurgl/8Schwestern (Seite nicht vorhanden)&quot;&gt;Helferlein&lt;/a&gt; hinzugefügt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Korrekter Titel|F#}}&lt;br /&gt;
{{Dieser Artikel|behandelt die Programmiersprache. Zur Bedeutung von f# in der Optik siehe [[Lichtstärke (Fotografie)]].}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Programmiersprache&lt;br /&gt;
| Name                         = F#&lt;br /&gt;
| Logo                         = [[Datei:Fsharp logo.png|230px]]&lt;br /&gt;
| Beschreibung                 = Funktionale Programmiersprache&lt;br /&gt;
| Paradigma                    = multiparadigmatisch: [[Funktionale Programmierung|funktional]], [[Imperative Programmierung|imperativ]], [[Objektorientierte Programmierung|objektorientiert]]&lt;br /&gt;
| Erscheinungsjahr             = 2002&lt;br /&gt;
| Designer                     = &lt;br /&gt;
| Entwickler                   = [[F Sharp Software Foundation]], [[Don Syme]], [[Microsoft]],&lt;br /&gt;
| AktuelleVersion              = 7.0&amp;lt;ref&amp;gt;{{Internetquelle |url=https://devblogs.microsoft.com/dotnet/announcing-fsharp-7/ |titel=Announcing F# 7 |datum=2021-11-09 |abruf=2023-09-14 |sprache=en-US}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| AktuelleVersionFreigabeDatum = 8. November 2022&lt;br /&gt;
| AktuelleVorabVersion         = &lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
| Typisierung                  = [[Statische Typisierung|statisch]], [[Starke Typisierung|stark]], implizit&lt;br /&gt;
| Implementierung              = &lt;br /&gt;
| Dialekte                     = &lt;br /&gt;
| Standardisierungen           = &lt;br /&gt;
| Beeinflusst_von              = [[Objective CAML]], [[C-Sharp|C#]], [[Haskell (Programmiersprache)|Haskell]], [[Elm (Programmiersprache)|Elm]]&lt;br /&gt;
| Beeinflusste                 = [[Elm (Programmiersprache)|Elm]], [[F*]], [[LiveScript]], [[Elixir (Programmiersprache)|Elixir ]]&lt;br /&gt;
| Betriebssystem               = [[plattformübergreifend]]&lt;br /&gt;
| Lizenz                       = [[Apache-Lizenz 2.0]]&lt;br /&gt;
| Website                      = [http://fsharp.org/ F# Software Foundation]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;F#&amp;#039;&amp;#039;&amp;#039; (gelesen: &amp;#039;&amp;#039;F {{lang|en|sharp}}&amp;#039;&amp;#039;; englische Aussprache [{{IPA|ɛfː ʃɑrp}}]) ist eine [[Typsicherheit|typsichere]] Multi-[[Programmierparadigma|Paradigmen-]]Sprache mit starkem Fokus auf [[funktionale Programmierung]] für das [[.Net-Framework]]. Die Syntax ähnelt der von [[Objective CAML|OCaml]] sehr stark, da diese Sprache als Vorbild für die Implementierung der funktionalen und imperativen Sprachelemente diente. Im Gegensatz zu [[Objective CAML|OCaml]] hat F# kein strukturiertes [[Typisierung (Informatik)|Typsystem]], sondern ein normatives, um bessere Kompatibilität mit [[C-Sharp|C#]] zu erreichen.&lt;br /&gt;
&lt;br /&gt;
Die objektorientierte Seite von F# ist deshalb auch signifikant anders als die in OCaml.&lt;br /&gt;
&lt;br /&gt;
F# ist voll interaktionsfähig mit allen anderen Sprachen des [[.NET (Oberbegriff)|.NET]]-Systems und bietet durch das [[.Net-Framework]] und [[Mono (Software)|Mono]] die Möglichkeit, den Code sowohl auf Windows als auch auf Linux, der [[Berkeley Software Distribution|BSD]]- und [[illumos]]-Familie und [[macOS]] einzusetzen. Via [[Xamarin]] sind auch [[Android (Betriebssystem)|Android]] und iOS als Zielplattformen möglich.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich wurde F# als Forschungsprojekt von [[Microsoft Research]] entwickelt, derzeit wird es von Microsofts Entwicklungsabteilung und der F# Software Foundation fortgeführt. F# wurde als Teil von [[Visual Studio]] 2010 erstmals offiziell unterstützt und mit ausgeliefert.&amp;lt;ref&amp;gt;[http://blogs.msdn.com/dsyme/archive/2008/12/10/fsharp-to-ship-as-part-of-visual-studio-2010.aspx &amp;#039;&amp;#039;F# to ship as part of Visual Studio 2010&amp;#039;&amp;#039;.] Don Syme’s WebLog on the F# Language and Related Topics&amp;lt;/ref&amp;gt; Im November 2010 wurde F# sowie zugehörige [[Compiler]] und Bibliotheken unter der [[Apache-Lizenz 2.0]] freigegeben.&lt;br /&gt;
&lt;br /&gt;
== Einige Sprachmerkmale ==&lt;br /&gt;
=== Werte ===&lt;br /&gt;
In überwiegend imperativen Sprachen sind [[Variable (Programmierung)|Variablen]] das primäre Sprachkonstrukt, um Werte zu speichern. Dies geschieht in funktional orientierten Programmiersprachen wie F# durch unveränderliche (englisch: „immutable“) Sprachkonstrukte. Mit dem häufig eingesetzten [[Schlüsselwort (Programmierung)|Schlüsselwort]] &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; können Werte eines bestimmten Typs deklariert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let pi = 3.14159265&lt;br /&gt;
let name = &amp;quot;John&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
F# bietet [[Typableitung]], d.&amp;amp;nbsp;h. Typen von Ausdrücken werden automatisch ermittelt. Beispielsweise bekommt &amp;lt;code&amp;gt;pi&amp;lt;/code&amp;gt; automatisch den Typ des [[Gleitkommazahl]]-[[Literal]]s zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Veränderliche Variablen sind mit dem &amp;lt;code&amp;gt;mutable&amp;lt;/code&amp;gt; Schlüsselwort möglich und werden mit dem Zuweisungsoperator &amp;lt;code&amp;gt;&amp;lt;-&amp;lt;/code&amp;gt; verändert. Dies wird in den meisten Fällen nur selten getan, weil die beschriebene Unveränderlichkeit von Werten als passender zur Sprachphilosophie gesehen wird. Dies nennt sich in F# auch &amp;#039;&amp;#039;functional first&amp;#039;&amp;#039;, also „funktional-zuerst“.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://slideslive.com/38904441/functionalfirst-programming-with-f?ref=og-meta-tags |titel=Functional-first Programming with F# |sprache=en-US |abruf=2023-09-14}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let mutable x = 10&lt;br /&gt;
x &amp;lt;- 15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Werte im Nachhinein zu verändern, ist auch durch die Verwendung von sogenannten &amp;#039;&amp;#039;reference cells&amp;#039;&amp;#039; möglich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let x = ref 0     // x hat den Typ &amp;quot;int ref&amp;quot;, ist also eine Referenz auf einen Integer&lt;br /&gt;
x := 5            // x wird ein neuer Wert zugewiesen&lt;br /&gt;
printfn &amp;quot;%i&amp;quot; !x   // Mittels des &amp;quot;!&amp;quot;-Operators wird x dereferenziert. Gibt 5 aus.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
Funktionen werden wie andere Werte mit &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt; deklariert und können Parameter erwarten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let square x = x * x&lt;br /&gt;
let add x y = x + y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktionen können Funktionen als Parameter erwarten (siehe [[Funktion höherer Ordnung]]):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let do_twice f x = f (f x)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Typen der Parameter werden automatisch erkannt, können aber auch explizit deklariert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let add (x: int) (y: int) :int = x + y&lt;br /&gt;
let do_twice (f : int -&amp;gt; int) (x: int) = f (f x)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anweisung&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
printfn &amp;quot;%A&amp;quot; (do_twice square 5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
gibt 625 (das Quadrat des Quadrats von&amp;amp;nbsp;5) aus. Die Funktion &amp;lt;code&amp;gt;do_twice&amp;lt;/code&amp;gt; kann mit Hilfe des [[Komposition (Mathematik)|Kompositionsoperators]] und nach [[Eta-Reduktion]] auch als&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let do_twice f = f &amp;gt;&amp;gt; f&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel wird für &amp;lt;code&amp;gt;square&amp;lt;/code&amp;gt; der Typ &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; style=&amp;quot;white-space:nowrap&amp;quot; inline&amp;gt;int -&amp;gt; int&amp;lt;/syntaxhighlight&amp;gt; ermittelt, das heißt, &amp;lt;code&amp;gt;square&amp;lt;/code&amp;gt; ist eine Funktion, die einen Parameter vom Typ &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; erwartet und einen Wert vom Typ &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; zurückgibt. Für &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; inline&amp;gt;do_twice&amp;lt;/syntaxhighlight&amp;gt; erhält man den Typ &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; style=&amp;quot;white-space:nowrap&amp;quot; inline&amp;gt;(&amp;#039;a -&amp;gt; &amp;#039;a) -&amp;gt; &amp;#039;a -&amp;gt; &amp;#039;a&amp;lt;/syntaxhighlight&amp;gt;. Dies bedeutet, &amp;lt;code&amp;gt;do_twice&amp;lt;/code&amp;gt; ist eine Funktion, die als ersten Parameter einen Wert vom Typ &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; style=&amp;quot;white-space:nowrap&amp;quot; inline&amp;gt;(&amp;#039;a -&amp;gt; &amp;#039;a)&amp;lt;/syntaxhighlight&amp;gt; (eine Funktion mit einem Parameter vom Typ &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; inline&amp;gt;&amp;#039;a&amp;lt;/syntaxhighlight&amp;gt; und einem Rückgabewert vom Typ &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; inline&amp;gt;&amp;#039;a&amp;lt;/syntaxhighlight&amp;gt;) bekommt. Als zweiten Parameter erhält sie einen Wert vom Typ &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; inline&amp;gt;&amp;#039;a&amp;lt;/syntaxhighlight&amp;gt; und sie gibt einen Wert vom Typ &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; inline&amp;gt;&amp;#039;a&amp;lt;/syntaxhighlight&amp;gt; zurück. &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; inline&amp;gt;&amp;#039;a&amp;lt;/syntaxhighlight&amp;gt; hat hier die Rolle einer Typvariable (grob vergleichbar mit Generic- oder Template-Parametern in [[Java (Programmiersprache)|Java]]/[[C++]], siehe [[Polymorphie (Programmierung)]]).&lt;br /&gt;
&lt;br /&gt;
In F# werden Parameter ohne Klammern etc., nur durch Leerzeichen getrennt, an die Funktion übergeben. Nur wenn als [[Parameter (Informatik)|Parameter]] der Rückgabewert einer anderen Funktion benötigt wird, müssen Klammern gesetzt werden, um die Evaluierungsreihenfolge der Ausdrücke zu definieren. Bei &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; style=&amp;quot;white-space:nowrap&amp;quot; inline&amp;gt;printfn &amp;quot;%A&amp;quot; (add 5 8)&amp;lt;/syntaxhighlight&amp;gt; gehören die Werte 5 und 8 zur Funktion &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; inline&amp;gt;add&amp;lt;/syntaxhighlight&amp;gt;; deren Rückgabewert ist ein Parameter für die Funktion &amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot; inline&amp;gt;printfn&amp;lt;/syntaxhighlight&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
F# ermöglicht [[Closure (Funktion)|Closures]] und verwendet [[Currying]] automatisch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let add x y = x + y&lt;br /&gt;
let inc = add 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Definition von &amp;lt;code&amp;gt;inc&amp;lt;/code&amp;gt; wird der erste Parameter der Funktion &amp;lt;code&amp;gt;add&amp;lt;/code&amp;gt; an den Wert 1 gebunden. Das Ergebnis dieser [[Partielle Funktionsanwendung|partiellen Funktionsanwendung]] ist eine neue Funktion mit nur noch einem Parameter. Die Auswertung des Ausdrucks&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
inc 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
liefert als Ergebnis 6.&lt;br /&gt;
&lt;br /&gt;
F# unterstützt [[Tupel (Informatik)|Tupel]]:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let u = (3, 6)&lt;br /&gt;
let v = (2, -3)&lt;br /&gt;
let add (a, b) (c, d) = (a + c, b + d)&lt;br /&gt;
let x, y = add u v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
F# bietet &amp;#039;&amp;#039;Discriminated Unions&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;[https://learn.microsoft.com/de-de/dotnet/fsharp/language-reference/discriminated-unions Unterscheidungs-Unions], auf learn.microsoft.com&amp;lt;/ref&amp;gt; und [[Pattern Matching]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
// Ein Element vom Typ Baum ist entweder ein &amp;quot;Ast&amp;quot; und enthält zwei Elemente vom Typ &amp;quot;Baum&amp;quot;,&lt;br /&gt;
// oder es ist ein &amp;quot;Blatt&amp;quot; und enthält einen Integer&lt;br /&gt;
type Baum =&lt;br /&gt;
| Ast of Baum * Baum&lt;br /&gt;
| Blatt of int&lt;br /&gt;
&lt;br /&gt;
let rec baumSumme x =&lt;br /&gt;
    match x with&lt;br /&gt;
    | Ast(l, r) -&amp;gt; baumSumme l + baumSumme r&lt;br /&gt;
    | Blatt(x)  -&amp;gt; x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es [[Type Provider]] für die typsichere Verarbeitung externer Daten mit [[IntelliSense]].&amp;lt;ref&amp;gt;[https://docs.microsoft.com/en-us/dotnet/fsharp/tutorials/type-providers/ Type Provider]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In F# ist auch [[Objektorientierte Programmierung|objektorientiertes Programmieren]] möglich. Beispiel für eine Klassendeklaration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
type Person =&lt;br /&gt;
    val name : string&lt;br /&gt;
    val mutable age : int&lt;br /&gt;
    new(n, a) = { name = n; age = a }&lt;br /&gt;
    member x.Name = x.name&lt;br /&gt;
    member x.Age&lt;br /&gt;
        with get() = x.age&lt;br /&gt;
        and set(v) = x.age &amp;lt;- v&lt;br /&gt;
    member x.Print() = printfn &amp;quot;%s ist %i Jahre alt.&amp;quot; x.name x.age&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Zeiger (Informatik)#Nullzeiger|Nullzeiger]] werden nur für die Interaktion mit Klassen aus dem [[.Net-Framework]] benötigt.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
Im F#-Code sind zwei Syntaxformen möglich: einfache Syntax und ausführliche Syntax. Die einfache Syntax wird standardmäßig verwendet.&lt;br /&gt;
&lt;br /&gt;
Beispiel für die einfache und ausführliche Syntax:&lt;br /&gt;
{| class=&amp;quot;wikitable toptextcells&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! einfache Syntax !! ausführliche Syntax&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let mutable x = 1&lt;br /&gt;
&lt;br /&gt;
while x &amp;lt; 3 do&lt;br /&gt;
    x &amp;lt;- x + 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let mutable x = 1&lt;br /&gt;
&lt;br /&gt;
while x &amp;lt; 3 do&lt;br /&gt;
    x &amp;lt;- x + 1&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
type Person =&lt;br /&gt;
    val name : string&lt;br /&gt;
    val mutable age : int&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
type Person =&lt;br /&gt;
class&lt;br /&gt;
    val name : string&lt;br /&gt;
    val mutable age : int&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bei der einfachen Syntax sind die Einrückungen zwingend erforderlich, bei der ausführlichen könnte man sie auch weglassen.&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebung und Compiler ==&lt;br /&gt;
&lt;br /&gt;
F#-Code wird [[Compiler|kompiliert]], hierbei entsteht [[Zwischencode]] in der [[Common Intermediate Language]] (CIL), genau wie bei Programmen, die in [[C-Sharp|C#]] oder [[VB.NET]] geschrieben wurden.&lt;br /&gt;
&lt;br /&gt;
Es gibt auch eine interaktive Umgebung bzw. F#-[[Interpreter]], F# Interactive oder kurz FSI. Damit kann man den Code direkt in der [[Kommandozeile|Konsole]] schreiben. Eingaben im Interpreter sind mit &amp;lt;code&amp;gt;;;&amp;lt;/code&amp;gt; abzuschließen, wodurch auch mehrzeilige Eingaben ermöglicht werden. Nach dem Kompilieren führt F# Interactive den Code aus und schreibt die Signatur aller kompilierten Typen und Werte in das Konsolenfenster. Auch Fehlermeldungen werden so ausgegeben.&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/de-de/library/dd233175.aspx Microsoft F# Interactive-Referenz]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Interpreter erlaubt in unterstützten Editoren wie [[Visual Studio Code]] die Ausführung von Code ohne vorherige Kompilierung, so wie dies von dynamischen Sprachen bekannt ist.&lt;br /&gt;
&lt;br /&gt;
Außerdem gibt es den Fable&amp;lt;ref&amp;gt;{{Internetquelle |url=https://fable.io/ |titel=Fable · JavaScript you can be proud of! |abruf=2023-09-14}}&amp;lt;/ref&amp;gt;-Übersetzer, mit dessen Hilfe sich F#-Code in [[JavaScript]], [[Rust (Programmiersprache)|Rust]], [[Python (Programmiersprache)|Python]], [[PHP]] und [[Dart (Programmiersprache)|Dart]] übersetzen lässt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
Folgende Beispiele eines [[Hallo-Welt-Programm]]s geben „Hello World“ aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let main = System.Console.WriteLine(&amp;quot;Hello World&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
printfn &amp;quot;Hello World&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die folgende Funktion implementiert die rekursive [[Ackermannfunktion]]:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fsharp&amp;quot;&amp;gt;&lt;br /&gt;
let rec ack m n =&lt;br /&gt;
    if m = 0 then n + 1&lt;br /&gt;
    else if n = 0 then ack (m - 1) 1&lt;br /&gt;
    else ack (m - 1) (ack m (n - 1))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Oliver Sturm: &amp;#039;&amp;#039;F# Einstieg und praktische Anwendung&amp;#039;&amp;#039;. entwickler.press, 2012, ISBN 978-3-86802-083-0.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Commonscat|F Sharp (programming language)|F-Sharp}}&lt;br /&gt;
* {{Internetquelle |url=http://fsharp.org/ |titel=The F# Software Foundation |abruf=2014-06-05 |sprache=en}}&lt;br /&gt;
* {{Internetquelle |url=https://docs.microsoft.com/de-de/dotnet/fsharp/ |titel=F# Dokumentation |werk=Microsoft Docs |hrsg=Microsoft |abruf=2014-04-27}}&lt;br /&gt;
* {{Internetquelle |url=https://github.com/dotnet/fsharp |titel=F# compiler, Basisbibliothek und Tools auf GitHub |abruf=2020-06-09 |sprache=en}}&lt;br /&gt;
* {{Internetquelle |url=http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/default.aspx |titel=F# at Microsoft Research |hrsg=Microsoft Research |abruf=2014-04-27 |sprache=en |kommentar=F#-Homepage von Microsoft Research}}&lt;br /&gt;
* {{Internetquelle |url=http://www.ctocorner.com/fsharp/book/default.aspx |titel=The F# Survival Guide |hrsg=CTO Corner |archiv-url=https://web.archive.org/web/20110715231625/http://www.ctocorner.com/fsharp/book/default.aspx |archiv-datum=2011-07-15 |abruf=2014-04-27 |sprache=en}}&lt;br /&gt;
* {{Internetquelle |url=http://dungpa.github.io/fsharp-cheatsheet/ |titel=F# Cheatsheet |werk=Github |abruf=2020-06-09 |sprache=en|hrsg=}}&lt;br /&gt;
* {{Internetquelle |autor=Scott Wlaschin |url=http://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work/ |titel=Twenty six low-risk ways to use F# at work |werk=F# for fun and profit |datum=2014-04-20 |abruf=2020-06-09 |sprache=en}}&lt;br /&gt;
* {{Internetquelle |url=https://try.fsharp.org/ |titel=Try F# |hrsg=F# Software Foundation |abruf=2020-06-09 |sprache=en}} Interaktives Tutorial.&lt;br /&gt;
&lt;br /&gt;
== Belege ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=7578680-1}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Funktionale Programmiersprache]]&lt;br /&gt;
[[Kategorie:Microsoft]]&lt;br /&gt;
[[Kategorie:.NET]]&lt;br /&gt;
[[Kategorie:Programmiersprache für die Common Language Runtime]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Derkoenig</name></author>
	</entry>
</feed>