68
Informatik (Subject) / Funktionale Programmierung (Lesson)
Advertisement
- mod mod :: Int -> Int -> Int Modulo rechnen ( 2 % 5 = 1 )
- ($) ($) :: ( a -> b) -> a -> b Der Dollar-Operator zur Verknüpfung zweier Funktion (Output A = Input B)
- (.) (.) :: ( b -> c ) -> ( a -> b ) -> a -> c Punkt-Operator: Verknüpft auch zwei Funktionen im Sinne von: f.g(h) = f(g(h))
- id id: a -> a Identitätsfunktion
- const const :: a -> b -> a Konstante Funktion
- update update :: Eq a => (a -> b) -> a -> b -> a -> b Funktionsupdate: wenn a = a' dann b ansonsten f a'
- flip flip :: ( a -> b -> c ) -> b -> a -> c Dreht die Parameter einer zweistelligen Funktion um.
- curry uncurry curry :: ((a,b) -> c) -> a -> b -> c Wandelt eine binäre Funktion in eine lineare Funktion um uncurry :: (a -> b -> c) -> (a,b) -> c Wandelt eine lineare Funktion in eine binäre Funktion um
- lift lift :: (a -> b -> c) -> (state -> a) -> (state -> b) -> state -> c lift heißt mathematisch f(x) 'op' g(x) (Zwei Funktionen mit einem arithmetischen Operator verknüpft)
- endrekursiver Funktionsaufruf bedeutet das die gesamte Ausführung der Funktion rekursiv verläuft. An keinem Moment der Ausführung soll auf das Ergebnis einer rekursiven Berechnung gewartet werden.
- Advertisement
- loop loop :: State -> Int -> Int (state ist die Schleifenvariable) Schleifenfunktion (solange eine Bedingung erfüllt ist, wird die Funktion rekursiv aufgerufen.)
- single single :: a -> [a] entspricht: a : []
- length length :: [a] -> Int Berechnet die Länge einer Liste
- null null :: [a] -> Bool Prüft, ob eine Liste leer ist.
- head head :: [a] -> a Gibt das erste Element einer Liste zurück
- tail tail :: [a] -> [a] Git alle Elemente einer Liste bis auf das Erste in einer Liste zurück.
- (++) (++) :: [a] -> [a] -> [a] Listenkonkatenation (Verknüpfung zweier Listen)
- (!!) (!!) :: [a] -> Int -> a Gibt das Element mit dem Index Int einer Liste zurück
- init init :: [a] -> [a] Gibt alle Elemente einer Liste bis auf das Letzte in einer Liste zurück.
- last last :: [a] -> a Gibt das letzte Elemente einer Liste zurück.
- take take :: Int -> [a] -> [a] Gibt alle Elemente bis zum Index Int einer Liste zurück
- drop drop :: Int -> [a] -> [a] Gibt alle Elemente einer Liste ab dem Index Int (exkl.) zurück.
- takeWhile takeWhile :: (a -> Bool) -> [a] -> [a] Gibt solange die Elemente einer Liste zurück, solange die Bedingung erfüllt ist.
- dropWhile dropWhile :: (a -> Bool) -> [a] -> [a] Überspringe solange die Elemente einer Liste wie die Bedingung erfüllt ist.
- updList updList :: [a] -> Int -> a -> [a] Ersetze in einer Liste das Element mit dem Index Int durch einen neuen Wert
- reverse reverse :: [a] -> [a] Gibt eine Liste zurück, in der die Elemente rückwärts (von rechts nach links) von der Ursprungsliste stehen. [1,2,3] --reverse--> [3,2,1]
- loop (Liste) loop :: [state] -> [a] -> [a] Die Schleifenfunktion für eine Liste
- splitAt splitAt :: Int -> [a] -> ([a],[a]) Splittet eine Liste nach dem Element mit dem Index int in zwei Teile und gibt beide Teile in einem Tupel zurück.
- span span :: (a -> Bool) -> [a] -> ([a],[a]) Splittet eine Liste vor dem Element, welches die Bedingung nicht mehr erfülllt.
- sublist sublist :: [a] -> Int -> Int -> [a] Gibt die Elemente vom Index Int bis zum Index Int' einer Liste in einer neuen Liste aus.
- Advertisement
- merge merge :: [Int] -> [Int] -> [Int] Gibt alle Elemente aus zwei Listen in einer Liste aufsteigend sortiert zurück
- map map :: (a -> b) -> [a] -> [b] Wendet eine einstellige Funktion auf jedes Element einer Liste an Bsp.: [2..9] --map (+5)--> [7..14]
- zipWith zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] Nimmt nacheinander je ein Element aus a und b und wenn dann auf eine zweistellige Funktion auf beide Elemente an. Die Ergebnisse werden in einer neuen Liste ausgegeben.
- zip zip :: [a] -> [b] -> [(a,b)] Nimmt je ein Element aus Liste a und b und bildet daraus ein Tupel, welches in eine neue Liste eingefügt wird.
- lookup lookup :: Eq a => a -> [(a,b)] -> Maybe b Gegeben ist eine Liste mit Tupeln (Index, Inhalt). Lookup gibt den Inhalt des Tupels mit dem Index a im Datentyp Maybe zurück. Bei Fehler wird Nothing zurückgegeben.
- updRel updRel :: Eq a => [(a,b)] -> a -> b -> [(a,b)] Gegeben ist eine Liste mit Tupeln (Index,Inhalt). Der Inhalt des Tupels mit dem Index a wird durch b ersetzt.
- foldl foldl :: (state -> a -> state) -> state -> [a] -> state Eine zweistellige Funktion wird nacheinander auf den State und ein Element einer Liste angewendet. Das Ergebnis der Funktion bildet den neuen State für das nächste Element der Liste. Zum Schluss wird der state ausgegeben.
- sum product and or concat sum :: Num a => [a] -> a // Aufsummieren der Elemente einer Liste product :: Num a => [a] -> a // Aufmultiplizieren der Elemente einer Liste and :: [Bool] -> Bool // Verundung der Elemente einer Liste mit boolschen Ausdrücken (state = True) or :: [Bool] -> Bool // Veroderung der Elemente einer Liste mit boolschen Ausdrücken (state = False) concat :: [[a]] -> [a] // Verknüpft alle Listen einer Liste von Listen zu einer Liste
- concatMap concatMap :: (a -> [b]) -> [a] -> [b] Zunächst wird eine einstellige Funktion, die eine Liste zurückgibt, auf jedes Element einer Liste angewendet (map). Anschließend erfolgt die Konkatenation aller Listen der so entstandenen Liste von Listen.
- minimum maximum minimum :: [a] -> a \\Ermittelt das Minimum einer Liste maximum :: [a] -> a \\Ermittelt das Maximum einer Liste
- fold2 fold2 :: (state -> a -> b -> state) -> state -> [a] -> [b] -> state Eine dreistellige Funktion wird auf den state und je ein Element der Listen a und b angewendet. Das Ergebnis ist der neue Stack für den nächsten Durchgang. Zum Schluss wird der Stack zurückgegeben.
- foldr foldr :: (a -> state -> state) -> state -> [a] -> state Eine zweistellige Funktion wird nacheinander auf ein Element einer Liste und den State angewendet. Das Ergebnis der Funktion bildet den neuen State für das nächste Element der Liste. Zum Schluss wird der State ausgegeben.
- any any :: (a -> Bool) -> [a] -> Bool Prüft, ob es ein Element in einer Liste gibt, welches die Bedingung erfüllt.
- all all :: (a -> Bool) -> [a] -> Bool Prüft, ob alle Elemente einer Liste die Bedingung erfüllen
- elem notElem elem :: Eq a => a -> [a] -> Bool Prüft, ob Element a in einer Liste enthalten ist. notElem :: Eq a => a -> [a] -> Bool Prüft, ob Element a nicht in einer Liste enthalten ist.
- filter filter :: (a -> Bool) -> [a] -> [a] Filter alle Elemente, die die Bedingung erfüllen, aus einer Liste heraus und speichert diese in einer neuen Liste
- Listenkomprehension (Definition und Bestandteile) Listenkomprehension Def. [f x | x -> l, guard(s)] Nehme Element x aus Liste l, wenn es der Guard erlaubt, und führe dann f darauf aus. Schreibe das Ergebnis in eine neue Liste. Sollte kein Element aus der Liste genommen werden können oder ist die Quelle leer, gebe die leere Liste zurück.
- addIndex addIndex :: [a] -> [(Int,a)] Macht aus einer Liste eine Liste mit Tupeln (Index, Inhalt)
- iterate iterate :: (a -> a) -> a -> [a] Erstellt eine Liste, dessen nachfolgendes Elemente durch eine einstellige Funktion ermittelt wird. Bsp. iterate (+2) 10 ~~> [10,12,14,...]
- Definiere die folgenden Datentypen: Nat, Maybe a, Either a, [a] data Nat = Zero | Succ Nat data Maybe a = Just a | Nothing data Either a b = Left a | Right a data [a] = [] | a : [a]