给定表单输入A,B,C
其中顺序不固定(例如C,B,A
也可能),我如何将字符串解析为元组(a,b,c)
以便再次对结果进行排序?
更大的例子:
Input A:
A 1
B 2
C 3
Input B:
C 3
B 2
A 1
Parsers:
a = "A " *> decimal
b = "B " *> decimal
c = "C " *> decimal
我如何编写一个解析器来给出(1,2,3)
对于输入 A 和 B。
编辑:我必须更准确:它们并不都是小数......否则choice
将是这里选择的组合器。
您可以使用文本.秒差距.Perm http://hackage.haskell.org/packages/archive/parsec/3.1.3/doc/html/Text-Parsec-Perm.html:
{-# LANGUAGE TupleSections, NoMonomorphismRestriction #-}
import Text.Parsec
import Text.Parsec.Perm
import Control.Applicative
a = ...
b = ...
c = ...
p = permute (
(,,) <$$> a <||> b <||> c)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)