F# - Funktionales Programmieren unter .NET

Informatik Seminar WS09/10 von Sören Militzer


Seminarthemen WS09/10 :: Einleitung | Grundlagen Funktionaler Programmierung | Datenstrukturen | Imperative Aspekte | Objektorientierte Aspekte


Was ist F#?

F# (ausgesprochen F Sharp) ist eine Multi-Paradigmen Programmiersprache und das neueste Mitglied der Hauptprogrammiersprachen für das .NET Framework. Das Hauptparadigma von F# ist die funktionale Programmierung, jedoch läßt sie es aber den Entwickler offen zwischen der Welt der funktionalen Programmierung sowie der Welt der imperativen / objektorientierten Welt des .NET Frameworks flüssig hin und her zu wechseln. F# ist das Ergebnis der Bemühungen von Microsoft, eine funktionale Programmiersprache - welche bisher meistens nur abseits des "Mainstreams" und des "Durchschnittsprogrammierers" genutzt wurden - durch die Integration in das .NET Framework und einer Mainstream-IDE wie Visual Studio mainstream-fähig zu gestalten.

F#s Wurzeln basieren auf der funktionalen Programmiersprache OCaml, welches wiederrum auf der Familie der ML-Sprachen basiert und ist somit in den Kernstrukturen entweder direkt Compiler-Kompatibel zu OCaml oder mit leichten Änderungen im Quelltext. F# zieht auch viele Vorteile aus C# und anderen funktionalen Programmiersprachen wie Haskell oder Erlang.

Die Entwicklung an F# begann 2002 durch Don Syme und dem Team bei Microsoft Research, wobei das Projekt eng verknüpft war mit der Einführung von Generics in die Common Language Runtime des .NET Frameworks. Im Jahr 2005 erschien das erste größere Pre-Release von F# und seit jeher werden regelmäßig sogenannte Community Tech Previews (CTPs) released, anhand derer Nutzer der Sprache F# die aktuelle Entwicklung verfolgen sowie darauf Einfluß nehmen können. Das letzte CTP wurde am 18. Oktober 2009 in der Version 1.9.7.8 veröffentlicht. Durch die schnelle Entwicklung von F# ändern sich einige Sprachkonstrukte teilweise radikal, daher kann es also sein, das die in dieser Ausarbeitung vorliegenden Quelltexte mit einer späteren Version nicht mehr kompilierbar sein könnten. Die neuste F# CTP sowie die Beta von Visual Studio 2010 können auf der F# Projekt Seite der Microsoft Research bzw. auf der offiziellen Produkthomepage von F# bezogen werden.


Arbeiten mit der FSI

Die F# CTP besteht im Wesentlichen aus dem F#-Compiler (fsc.exe), der F# Interactive Console (fsi.exe) sowie der Integration in Visual Studio wie zum Beispiel direkten Debugger Support, IntelliSense, Integration der FSI Konsole in Visual Studio und weitere. Durch die FSI können Programmteile interaktiv Schritt für Schritt definiert und ausgewertet werden, bevor sie später als Bestandteil eines Moduls bzw. einer Klasse implementiert werden.

Damit der Leser die folgenden Code Schnipsel besser nachvollziehen kann, wird zusätzlich zu den Codeschnipseln die Konsolenausgabe der FSI mit angegeben, die die Typen von Symbolen und Funktionen sowie die auf Symbolen zugewiesenen Werte beinhaltet. Die Eingabe von Funktionen und Programmteilen in die FSI wird nicht durch die Eingabe eines Return Zeichens unterbrochen, stattdessen muss der Anwesender die Eingabe in die Konsole mit einem ";;" (doppeltem Semikolon) beenden. Diese doppelten Semikola werden in dem nachfolgenden Code nicht mit angegeben.