ebook img

Arrows in Haskell PDF

40 Pages·2010·0.23 MB·German
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Arrows in Haskell

Motivation ArrowsimVergleichzuMonaden Arrow-Kombinatoren BeispieleundAnwendungen Fazit Arrows in Haskell Sven Hamer Martin Kartawijaya Friday 15 January, 2010 SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden Arrow-Kombinatoren BeispieleundAnwendungen Fazit Motivation Abgrenzung zu Monaden Ein monadischer Parser Arrows im Vergleich zu Monaden Unterschiede Arrows und Monaden Repr¨asentation von simplen Funktionen do-Notation Implementierung durch Kleisli-Monade Arrow-Kombinatoren Beispiele und Anwendungen Fazit SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden AbgrenzungzuMonaden Arrow-Kombinatoren EinmonadischerParser BeispieleundAnwendungen Fazit Motivation Wozu brauchen wir diese Arrows? SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden AbgrenzungzuMonaden Arrow-Kombinatoren EinmonadischerParser BeispieleundAnwendungen Fazit Definition: Arrows are a new abstract view of computation. They serve much the same purpose as monads – providing a common structure for libraries – but are more general. SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden AbgrenzungzuMonaden Arrow-Kombinatoren EinmonadischerParser BeispieleundAnwendungen Fazit (cid:73) Genereller als Monaden? (cid:73) Es gibt offenbar Berechnungen, die sich nicht mit Monaden ausdru¨cken lassen? (cid:73) Ein Beispiel: Ein monadischer Parser SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden AbgrenzungzuMonaden Arrow-Kombinatoren EinmonadischerParser BeispieleundAnwendungen Fazit Ein kleiner Ru¨ckblick Mit Monaden lassen sich Berechnungen kapseln, welche einen Wert mit Typ a in eine Monade mit Typ b u¨berfu¨hren. class Monad m where return :: a -> m b (>>=) :: m a -> (a -> m b) -> m b SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden AbgrenzungzuMonaden Arrow-Kombinatoren EinmonadischerParser BeispieleundAnwendungen Fazit Interface eines monadischen Parsers newtype Parser s a = P ( [s] -> Maybe (a, [s]) ) class Monad m => MonadZero m where zero :: m a class MonadZero => MonadPlus m where (++) :: m a -> m a -> m a SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden AbgrenzungzuMonaden Arrow-Kombinatoren EinmonadischerParser BeispieleundAnwendungen Fazit Implementierung eines monadischen Parsers instance MonadZero Parser where zero = P (\s -> Nothing) instance MonadPlus Parser where P a ++ P b = P (\s -> case a s of Just (x, s’) -> Just (x, s’) Nothing -> b s ) SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden AbgrenzungzuMonaden Arrow-Kombinatoren EinmonadischerParser BeispieleundAnwendungen Fazit Problem mit dieser Implementierung (cid:73) Annahme: Grammatik mit Nicht-Terminal Symbolen (cid:73) Annahme: Der erste Parser schl¨agt fehl. (cid:73) Tempor¨are Daten s unn¨otig lange im Speicher fu¨r Backtracking: ... \s -> case a s of Just ... Nothing ... (cid:73) Space Leak! SvenHamer,MartinKartawijaya ArrowsinHaskell Motivation ArrowsimVergleichzuMonaden AbgrenzungzuMonaden Arrow-Kombinatoren EinmonadischerParser BeispieleundAnwendungen Fazit Verfeinern des Parsers: Statischer Anteil Idee: Aufteilen des Parsers in einen statischen und einen dynamischen Teil. (Annahme LL(1)-Parser) Statischer Teil: (cid:73) First-Menge (cid:73) Pr¨adikat: Akzeptiert leeren Input? Dynamischer Teil: (cid:73) Funktion: Eingabewort nach gelesenes Token und Restwort data StaticParser s = SP Bool [s] newtype DynamicParser s a = DP ([s] -> (a, [s])) data Parser s a = P (StaticParser s) (DynamicParser s a) SvenHamer,MartinKartawijaya ArrowsinHaskell

Description:
Arrows im Vergleich zu Monaden. Arrow-Kombinatoren. Beispiele und Anwendungen. Fazit. Arrows in Haskell. Sven Hamer Martin Kartawijaya.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.