68

Informatik (Fach) / Funktionale Programmierung (Lektion)

Standardfunktionen

Diese Lektion wurde von checko erstellt.

Lektion lernen

Anzeige
  • insert insert :: Eq a => a -> [a] -> [a] Fügt Element a in eine Liste ein, sofern dieses Element nicht in der Liste enthalten ist. Das Element a wird hinten an die Liste angehängt.
  • union union :: Eq a => [a] -> [a] -> [a] Vereinigung zweier Listen gemäß der Mengenvereinigung
  • unionMap unionMap :: Eq b => (a -> [b]) -> [a] -> [b] Wende zu nächste eine einstellige Funktion, die eine Liste ausgibt auf eine Liste an. Vereinige dann diese so entstandene Liste von Listen zu einer LIste.
  • meet meet :: Eq a => [a] -> [a] -> [a] Berechnet den Schnittmenge zweier Listen (Mengen)
  • remove remove :: Eq a => a -> [a] -> [a] Entfernt alle Elemente a aus einer Liste.
  • diff diff :: Eq a => [a] -> [a] -> [a] Berechnung der Differenz zweier Mengen (Liste 1 ohne Liste 2)
  • subset subset :: Eq a => [a] -> [a] -> Bool Prüft, ob Liste a eine Teilmenge von Liste b ist.
  • eqset eqet :: Eq a => [a] -> [a] -> Bool Prüft, ob zwei Mengen identisch sind. (A ist Teilmenge von B und umgekehrt.)
  • Definieren den Datentyp Bintree a data Bintree a = Empty | Fork a (Bintree a) (Bintree a)
  • leaf leaf :: a -> Bintree a erstellt ein Blatt für einen Binärenbaum
  • Anzeige
  • insertTree insertTree :: Ord a => a -> Bintree a -> Bintree a Fügt das Element a in einen Binärbaum ein, sofern dieser noch nicht enthalten ist.
  • Graph a (Datentyp) BinRel a (Typ) graph2Rel rel2Graph data Graph a = G [a] (BRfun a)            //type BRfun a = a -> [a] type BinRel a = [(a,a)] graph2Rel :: Graph a -> BinRel a          // Wandelt einen Graphen in eine Liste von Tupeln um rel2Graph :: Eq a => BinRel a -> Graph a      //Wandelt eine Tupelliste in einen Graphen um
  • Functor (fmap) class Functor f where fmap :: (a -> b) -> f a -> fb Anwendung einer einstelligen Funktion auf einen verschachtelten Typ wie Liste, Maybe, Either D.h. Wert aus Box holen, Funktion anwenden, Ergebnis wieder in Box verpacken
  • Applicative -> pure -> <*> class Functor f => Applicative where pure :: a -> f a (<*>) :: f (a -> b) -> f a -> f b Wende eine in einer Box befindliche, einstellige Funktion auf einen Box-Typ wie Maybe etc. an
  • Monade -> return -> (>>=) -> (>>) -> fail class Functor m => Monad m where return :: a -> m a (m = Typ der Monade) (>>=) :: m a -> (a -> m b) -> m b (Zuweisung, bind-Operator) (>>) :: m a -> m b -> m b (Zuweisung ohne Wertübergabe) fail :: String -> m a (Fehlermeldung)
  • MonadPlus -> mzero -> mplus class Monad m => MonadPlus m where mzero :: m a (Fehlerwert einer Berechnung) mplus :: m a -> m a -> m a (ähnlich wie Konkatenation von Listen (++))
  • Funktion der IO Monade: a) readFile b) writeFile c) putStr d) putStrLn e) getLine a) readFile :: String -> IO String                     // Liest Inhalt einer Datei als String ein b) writeFile :: Path -> String -> IO ()               // Schreibt einen String in einer Datei c) putStr :: String -> IO ()                              // Schreibt String in die Shell d) putStrLn :: String -> IO ()                           // Schreibt String in die Shell, dann Zeilensprung e) getLine :: IO String                                    // Liest einen eingegebenen String, dann ZS
  • array mkArray (!) (//) bounds array :: Ix a => (a,a) -> [(a,b)] -> Array a b Wandelt eine Liste von Tupeln (Index, Inhalt) in einen Array um. (a,a) = von/bis mkArray :: Ix a => (a,a) -> (a -> b) -> Array a b Schreibt das Ergebnis einer einstelligen Funktion in einen Array. (a,a) = von/bis (!) :: Ix a => Array a b -> a -> b Zugriff auf Feld a des Arrays. Gibt den Inhalt b des Feldes aus. (//) :: Ix a => Array a b -> [(a,b)] -> Array a b Update-Operator für ein Bereich des Arrays bounds :: Ix a => Array a b -> (a,a) Gibt die Grenzen des Arrays (a,a) zurück