4

A,B,C给定顺序不固定的表单中的输入(例如C,B,A也可能),我将如何将字符串解析为元组(a,b,c)以便再次对结果进行排序?

更大的例子:

输入 A:

A 1
B 2
C 3

输入 B:

C 3
B 2
A 1

解析器:

a = "A " *> decimal
b = "B " *> decimal
c = "C " *> decimal

我如何编写一个解析器来提供(1,2,3)输入 A 和 B。

编辑:我必须更准确:它们不都是小数......否则choice将是这里选择的组合器。

4

1 回答 1

8

您可以使用Text.Parsec.Perm

{-# LANGUAGE TupleSections, NoMonomorphismRestriction #-}

import Text.Parsec
import Text.Parsec.Perm
import Control.Applicative

a = ...
b = ...
c = ...

p = permute ( 
      (,,) <$$> a <||> b <||> c)
于 2013-06-26T23:59:00.963 回答