我想为尖括号中的逗号分隔值对编写解析器。我让它使用以下方法:
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 构造函数采用两个参数而不是一个元组:
data Foo = Foo Bar Bar
编写这样的解析器的最佳方法是什么?理想情况下,我想重用标准 Parsec 解析器,angles
并尽可能多地使用 applicative。