2013-09-16 25 views

回答

6

您可以使用一个事实,即解析器单子写这个如下:

val parser = for { 
    a <- parser_a 
    b <- parser_b(compute(a)) 
} yield (a, b) 

或者你可以改变你的解决方案下面的行(注意success这里只是一个一般的少特定版本monadic return)。

case a => val c = compute(a) ; success(a) ~ parser_b(c) 

虽然我个人发现for -comprehension在这种情况下更清楚一点。

相关问题