Funktionale Programmierung mit Haskell/ Weitere wichtige Haskell-Funktionen
Erscheinungsbild
(Weitergeleitet von Funktionale Programmierung mit Haskell: Funktionen)
Weitere interessante Funktionen
[Bearbeiten]Der "Egal"-Operator: _
[Bearbeiten]Bei Rückgabewerten kann es sein, dass ein Wert für die weitere Verarbeitung uninteressant ist. Er braucht nicht an eine Variable gebunden zu werden, sondern wird mit dem Unterstrich _ als "egal" gekennzeichnet (der korrekte Begriff ist "wildcard", also "Stellvertreterzeichen"). Im folgenden Beispiel definieren wir drei Funktionen fst3
, snd3
und lst3
, die aus 3-Tupeln jeweils den ersten (first), den zweiten (second) oder den letzten (last) Wert zurückgeben:
Beispiel für Wildcards auf ghci
Prelude> let fst3 (x,_,_) = x -- Liefere bei einem Tripel den ersten Wert zurück
Prelude> let snd3 (_,x,_) = x -- Liefere bei einem Tripel den zweiten Wert zurück
Prelude> let lst3 (_,_,x) = x -- Liefere bei einem Tripel den dritten Wert zurück
Prelude> let datum = (2014,10,15) -- definiere ein Tripel
Prelude> fst3 datum -- Zeige den ersten Wert des Tripels an
2014
Prelude> snd3 datum -- Zeige den zweiten Wert des Tripels an
10
Prelude> lst3 datum -- Zeige den letzten Wert des Tripels an
15
Prelude>
Lambda-Abstrahierung
[Bearbeiten]In Haskell können Funktionen in der formalen Sprache des Lambda-Kalküls definiert werden. Der Backslash \ steht dabei für das Lambda-Zeichen . Eine solche Funktion braucht keinen Namen zu haben und ist dann eine anonyme Funktion:
Beispiel Anonyme Funktionen auf ghci
Prelude> (\x -> x * 10) 7 -- Definiert eine (anonyme) Funktion, die x mit 10 multipliziert und wendet sie auf x=7 an
70
Prelude>(\x y -> x * y) 10 7 -- Definiert eine (anonyme) Funktion, die zwei Werte multipliziert und wendet sie auf 10 und 7 an
70
Prelude>let wenigerEins = \x -> x - 1 -- definiert die Funktion "wenigerEins" nach dem Lambda-Kalkül
Prelude>wenigerEins 200
199
Prelude>wenigerEins 199
198
Prelude>wenigerEins 198
197
Prelude>