F#, Funktionale Programmierung mit .NET, Teil 1
8. Februar 2008 – 13:14 von AndreasIch bin gerade dabei mich in F# einzuarbeiten, um stärker in die funktionale Denke reinzukommen. Das Schöne daran ist, dass ich einige neue Ansätze auch nach C# portieren und dort anwenden kann. Ich finde es sowieso cool, dass funktionale Konzepte immer mehr in den “Mainstream” einfließen. C# 3.0 ist das beste Beispiel hierfür!
Nun aber zu F#:
Ich habe vor meine neuen Erkenntnisse immer wieder zu bloggn und euch somit einen kleinen F#-Crash-Kurs mitzugeben!
Folgendes brauche ich, um mit F# anzufangen:
- Unter http://research.microsoft.com/fsharp/release.aspx findet man die aktuellen Versionen zum Download.
- Unter http://cs.hubfs.net/blogs/ findet man “die Seite”, wenns um Infos und Neuigkeiten zu F# geht.
Nach der Installation des F#-Projekt-Templares findet man in VisualStudio (bei mir ein englisches VS 2008), im [New Project]-Dialog unter [Other Project Types\F# Projects] eine VS-Projektvorlage für ein leeres F# Projekt! Nach dem Anlegen dieses Projekts findet man nur die leere Projektdatei vor. Mit Rechtsklick auf das Projekt, und der Auswahl [Add\New Item…] kann man nun ein neues [F# Source File] anlegen (F#-Dateien haben die Endung *.fs). Diese neu hinzugefügte Datei ist nicht leer. Man findet darin schon einige einführende F#-Beispiele. Um aber bei 0 anzufangen löschen wir den Inhalt der Datei komplett heraus! Nun haben wir also eine leere F#-Datei vor uns.
Als erstes tippen wir “#light” in den Kopf der Datei ein. Dies bewirkt, dass F# den Code whitespace-sensibel einliest. D.h. es muss bei der Entwicklung auf Leerzeichen geachtet werden. Mit dieser Einstellung kann man auf Zeichen, wie die geschweiften Klammern { } oder z.B. begin, end o.ä. verzichten. Gültigkeitsbereiche werden also rein mit Einrückungen gekennzeichnet (es gilt evtl. noch zu erwähnen, dass TABs nicht akzeptiert werden!). Die Konvention sieht für eine Einrückung 4 Leerzeichen vor. Dies macht den Code auch gut lesbar!
Springen wir nun also ins kalte Wasser und beginnen mit einer ersten (wie soll es anders sein;) HelloWorld-Ausgabe:
-
#light
-
let helloFSharp = "Hello from F#:)!"
-
print_string helloFSharp
-
read_line ()
Zuerst gilt zu sagen, dass in F# Variablen und Funktionen gleich behandelt werden, da Funktionen schlichtweg auch Variablen sind. Mit dem Schlüsselwort “let” definiert man eine neue Funktion oder Variable. In unserem Fall ist dies die Variable helloFSharp, welche den String “Hello from F#:)” zugewiesen bekommt. Den Inhalt dieser Variablen geben wir dann mit Hilfe der Funktion print_string (eine Funktion aus der F#-Library) auf die Konsole aus. “read_line ()” wartet dann noch zum Schluss, bis der Benutzer eine Eingabe in die Tastatur gemacht hat, so dass sich das Programm nach der Ausgabe nicht sofort selbst beendet.
So viel zum ersten kleinen Einstieg! Fortsetzung folgt;)…

8 Responses to “F#, Funktionale Programmierung mit .NET, Teil 1”
Eigentlich sollte ich ja VS2 lernen, aber das musste ich austesten
Das zip von der Microsoft-Seite hat auch ein Install-Script für Mono dabei, das 1A funktioniert! (muss zuvor mit dos2unix konvertiert werden weil noch ein paar \r’s drin sind)
% ./bin/fsc.exe test.fs
% chmod +x test.exe
% ./test.exe
Hello from F#:)!
Vielleicht kannst du bei deinem nächsten Blog-Post eine kleine Aufgabe stellen, so als interaktives Tutorial
By Aaron on Feb 8, 2008
Hey Aaron, Coole Sache, das wusste ich auch nicht:)!
Das mit dem interaktiven Tutorial find ich ne super Idee!! Das werd ich so machen:)!
Dem nächst hab ich vor mir auch mal ne Linux-Distr. auf meinen physikalischen Rechner;) (also nicht nur virtuell;) draufzumachen. Dann werd ich da auch mal mit Mono rumtesten:). Wenn ich Fragen hab wende ich mich dann an dich oder nougad;).
By Andreas on Feb 8, 2008
Hi!
Nette Idee, das Tutorial mach ich auch mal mit. Aspekte von anderen Sprachen und Konzepten sind immer gut zu gebrauchen. Bei Linuxfragen kannst dich gerne auch zusätzlich an mich wenden, zumindest allgemeine. Mono hab ich noch nicht installiert, werde ich aber nacher mal machen.
By kb on Feb 8, 2008
Super:)!!
By Andreas on Feb 8, 2008
wwoooho welch geile Idee. Ein interaktive F#-Tutorial. Ich überleg mir grad ernsthaft Mono zu installieren. Ich bin gespannt auf Teil 2!
Und dann will er sich noch Linux drauf machen. Mein Tag wir immer besser
By nougad on Feb 8, 2008
Ich habe heute mein erstes Projekt mit F# in VS 2010 erstellt und bin dan auf Probleme gestossen es gäbe Print_string und read_line() nicht.
Nach langem googlen und probieren bin ich nun auf die lösung gekommen.
Fals du was vergessen hast oben bin ich auch auf diene lösung gespannt?
#light
open System
let hello = “Hello from F#!”
Console.WriteLine (hello)
let read = Console.ReadLine()
By San on Jun 30, 2010
Hallo San,
danke für deinen Post! Die erstellte Demo ist mit einer etwas älteren Version von F# erstellt worden.
Hier die Version, welche auf der F#-Version von VS2010 gehen sollte:
#light
let helloFSharp = “Hello from F#:)!”
printfn “%s” helloFSharp
System.Console.ReadLine() |> ignore
By Andreas on Jul 4, 2010
@San: Deine Lösung ist natürlich genauso gut :-)! Noch als Anmerkung:
let read = Console.ReadLine()
kannst du verwenden wenn du die Bindung read noch später brauchst. Falls das nicht der Fall ist kannst du ignore verwenden, damit sparst du dir das Binding.
Viele Grüße
Andreas
By Andreas on Jul 4, 2010