如果我有一个解析器
a : Parser A
和一个解析器 b : Parser B
,那么我可以将它们组合成一个解析器 a | b : Parser (Either A B)
。这个方法可行,但是当我开始添加更多的选择并得到像 Either A (Either B C)
这样的类型时,就会变得有点棘手。我可以想象将前一个类型平铺成类似于Alternative A B C
的形式。我能否执行标准转换或者我必须为像Alternative A B C ...
这样的类型生成大量样板代码呢?
[]
具有多元性,以便您可以将类型写为Alternative [A,B,C]
。 - Ørjan Johansen:k []
,似乎只允许*
内容,但经过进一步测试,:k [Either Int, Maybe]
等已经可以正常工作。 - Ørjan Johansen