Fachkonzept: Funktion
Fachkonzept
Das Herzstück der funktionalen Programmierung stellen die Funktionen dar.
    Eine Funktion ist eine Verarbeitungseinheit, die Daten übergeben bekommt
    und anhand dieser neue Daten produziert.
    
Die Daten, die eine Funktion übergeben bekommt, nennt man Übergabedaten.
Je nach Funktion müssen diese Daten von einem spezifischen Typ sein. Diese unterschiedlichen Typen nennen wir Datentypen.
Funktionen verarbeiten die Übergabedaten und produzieren so Rückgabedaten, die wiederum von einem bestimmten Datentyp sind.
Die Daten, die eine Funktion übergeben bekommt, nennt man Übergabedaten.
Je nach Funktion müssen diese Daten von einem spezifischen Typ sein. Diese unterschiedlichen Typen nennen wir Datentypen.
Funktionen verarbeiten die Übergabedaten und produzieren so Rückgabedaten, die wiederum von einem bestimmten Datentyp sind.
Jede Funktion besitzt eine Signatur, welche die Informationen über Typ und Anzahl der Übergabe- und Rückgabedaten der Funktion repräsentiert.
    Eine Funktion besitzt eine eindeutige Signatur, welche angibt, wie viele
    Übergabe- und Rückgabedaten die Funktion besitzt und von welchem Datentyp die jeweiligen Daten sein müssen.
    
Beispielhafte Beschreibungen von Funktionen
Die Funktion: ceiling
Die Funktionceiling bekommt eine beliebige reelle Zahl übergeben und gibt die nächstgrößere
ganze Zahl zurück. Die Funktion hat die Signatur:
real -> integer 
Die Funktion: odd?
Die Funktionodd? bestimmt, ob eine ganze Zahl ungerade ist (#t) oder nicht (#f).
Die Funktion hat die Signatur:
integer -> boolean 
Die Funktion: string-length
Die Funktionstring-length bekommt eine beliebige Zeichenkette und gibt die Anzahl an Zeichen in 
der Zeichenkette zurück. Die Funktion hat die Signatur:
string -> natural 
Die Funktion: remainder
Die Funktionremainder gibt den Rest einer ganzzahligen Division zurück. Die Funktion hat die Signatur:
integer integer -> integer 
