haskell - ReadP 中的 "count 3"解析了 3 次。如何解析出现 3 到 8 次的情况?

标签 haskell

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/

相关文章:

类型类中的 Haskell 类型解析

haskell - 通过 Nix 安装 Haskell 包

haskell - 类型 : (Num a, Ord a) 与 (Int a)?

haskell - 可能循环数据结构的功能

haskell - 初学者 Haskell 问题 : how do I find indices in Haskell (manually using recursion without using findIndices)

haskell - 如何对数据类型构造进行检查

haskell - stack.yaml 文件是否应该检查到版本控制中?

haskell - 我们如何正式地说函数在参数中是非严格的?

haskell - Show Haskell 的实例

arrays - Haskell 实时更新和查找性能