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
來做同樣的事情?