6
私はxml-conduitパーサーを作成しています。私はモナディックに適用する構文を好みます。結合する議論がたくさんあるので、私は多少アプリケーションを失ってしまいます。私の現在の問題には8つの議論があり、結果を構成するのに4番目と6番目のものを使いたいだけです。Control.Applicativeの引数を無視します。
私が動作させる唯一の方法は次のとおりです。しかし、平らなソリューションのための星の空想配置があるはずです:
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
かっこなしのフォームで同じことを行うための方法はありますか?
parser = f <$> a1 ?? a2 ?? a3 ?? a4 ?? a5 ?? a6 ?? a7 ?? a8
このようにしてアプリケーションを使用する。残念ながら、プリプロセッサを使用する必要がありますが、それはまだ非常にクールです。 –
@TikhonJelvisありがとう、面白そうです。 –