ReadP有这个功能:
count :: Int -> ReadP a -> ReadP [a]
-- Usage:
count 3 $ satisfy (== 'c')
我想知道是否有类似的函数可以解析 3 到 8 次出现:
count_between 3 8 $ satisfy (== 'c')
如果我必须创建自己的,你会怎么做?
最佳答案
count_between a b p = (++) <$> count a p <*> count_upto (b - a) p
count_upto 0 _ = pure []
count_upto b p = ((:) <$> p <*> count_upto (b-1) p) +++ pure []
请注意与 many
的相似之处。一个munch
ing 变体将使用 <++
而不是+++
.
关于haskell - ReadP 中的 "count 3"解析了 3 次。如何解析出现 3 到 8 次的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44789752/