2013-09-16 59 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在這種情況下更清楚一點。

相關問題