Dieser Artikel verwendet zur Erklärung die funktionale Programmiersprache Haskell.

Grunddefinitionen

Das Grundkonzept der funktionalen Programmierung ist die Funktion. Eine Funktion in einer funktionalen Programmiersprache verhält sich äquivalent zu einer mathematischen Funktion. Eine Funktion heißt partiell, wen sie nur auf einer Umgebung ihres Argumentbereichs definiert ist. Andernfalls heißt sie total.
Sei f eine Funktion, a ein zulässiges Argument von f. Die Anwendung von f auf a nennen wir eine Funktionsanwendung; meist schreibt man dafür f (a) oder f a. Den Prozess der Berechnung des Funktionswerts heißt Auswertung. Die Auswertung kann terminieren oder nicht terminieren.
Werte sind in der funktionalen Programmierung Elementare Daten, zusammengesetzte Daten, Funktionen mit Werten als Argumenten und Ergebnisse.
Ein Typ fasst Werte zusammen, auf denen die gleichen Funktionsanwendungen erlaubt sind sind.
Datenstrukturen sind Strukturen, die einen „neuen“ Datentyp und alle seine wesentlichen Funktionen bereitstellen. Eine Datenstruktur besteht aus einer oder mehrerer disjunkten Wertemengen zusammen mit den darauf definierten Funktionen.
Die Signatur (T, F) der Datenstruktur besteht aus einer endlichen Menge T von Typbezeichnern und einer endlichen Menge F von Funktionsbezeichner. Es gilt für jedes f ∈ F ein Funktionstyp f::T1à…àTn àT0, Ti ∈ T, 0 < i < n wobei n die Stelligkeit von f ist.
Eine Datenstruktur mit Signatur (T, F) ordnet jedem  Typbezeichner t ∈ T eine Wertemenge, jedem Funktionsbezeichner f ∈ F eine partielle Funktion zu, sodass Argument- und Wertebereich von f den Wertemengen entsprechen, die zu f’s Funktionstyp gehören.
Ein Ausdruck (in Haskell) ist eine Konstante, ein Bezeichner, die Anwendung einer Funktion auf einen Ausdruck oder ein bedingter Ausdruck. Jeder Ausdruck hat einen Typ.
Eine Bezeichnerumgebung ist eine Abbildung von Bezeichnern auf Werte (einschl. Funktionen) und Typen, ggf. auch auf andersartige Programmelemente.

Rekursive Funktionen

Definitionen oder Deklarationen nennt man rekursiv, wenn der das deklarierte Programm im Definierten Teil verwendet wird. 
Eine Funktion ist rekursiv, wenn es rekursive Funktionsdeklarationen gibt, mit denen sie definiert werden kann. Eine Funktionsdeklaration heißt linear rekursiv, wenn in jedem zweig der Fallunterscheidung höchsten eine Anwendung erfolgt.
Für Datentypen, Prozeduren und Objekte gelten die gleichen Regeln!

 

0 Kommentare

ausklappen Kommentar hinzufügen



Gib uns Feedback!