Ich schreibe einen xml-Conduit-Parser, und ich bevorzuge applikative Syntax zu monadischen. Mit vielen Argumenten zu kombinieren, bin ich etwas verloren in der Anwendung. Mein aktuelles Problem ist 8 Argumente gegeben, ich möchte nur die 4. und 6. verwenden, um das Ergebnis zu konstruieren.Ignorieren von Argumenten in Control.Applicative
Der einzige Weg, wie ich es zum Laufen bringen konnte, war das Folgende;
import Control.Applicative
a1 :: Applicative Text
a2 :: Applicative Text
a3 :: Applicative Text
a4 :: Applicative Text
a5 :: Applicative Text
a6 :: Applicative Text
a7 :: Applicative Text
a8 :: Applicative Text
data Data = Data Text Text
f :: Text -> Text -> Data
parser :: Applicative Data
parser = a1 *> a2 *> a3 *> (f <$> a4 <* a5 <*> a6) <* a7 <* a8
Jede Art und Weise gleich in der Form ohne Klammern zu tun: Es sollte jedoch für eine flache Lösung Phantasie Anordnung der Sterne sein?
parser = f <$> a1 ?? a2 ?? a3 ?? a4 ?? a5 ?? a6 ?? a7 ?? a8
Vielleicht möchten Sie [Idiom Klammern] überprüfen (https://personal.cis.strath.ac.uk/conor.mcbride/pub/she/idiom.html), die Zucker einige nette Syntax um Anwendungen auf diese Weise zu verwenden. Leider erfordert es einen Präprozessor, aber es ist immer noch sehr cool. –
@TichonJelvis Danke, sieht interessant aus. –