山かっこでコンマ区切りの値のペアのパーサーを記述したいと思います。私はそれを次のアプローチで動作させることができました:
pair p1 p2 = do
x1 <- p1
comma
x2 <- p2
return (x1, x2)
data Foo = Foo (Bar, Bar)
foo :: Parser Foo
foo = Foo <$> (angles $ pair bar bar)
ただし、Fooコンストラクターでは、タプルではなく2つのパラメーターを使用することをお勧めします。
data Foo = Foo Bar Bar
そのようなパーサーを書くための最良の方法は何ですか?理想的には、このような標準のパーセクパーセクを再利用angles
し、可能な限りアプリケーションを使用したいと思います。