0
问题语句的字符串的多个实例:在"ABCDFGABIJABGHA"
解析使用READP
约束解析字符串"AB"
:使用ReadP
预期的解决方案:(["AB","AB","AB"],"whatever is left")
尝试:
getAll :: ReadP a -> ReadP [a]
getAll p = many loop
where
loop = p <|> (get >> loop)
readP_to_S (getAll $ string "AB") "ABCDFGABIJABGHA"
[([],"ABCDFGABIJABGHA"),(["AB"],"CDFGABIJABGHA"),(["AB","AB"],"IJABGHA"),(["AB"],"IJABGHA"),(["AB","AB","AB"],"GHA"),(["AB","AB"],"GHA"),(["AB","AB"],"GHA"),(["AB"],"GHA")]
我最后的状态是(["AB","AB","AB"],"GHA")
。是否可以使用ReadP
来做同样的事情?