between :: Ord a => a -> a -> A.Parser a -> A.Parser a
between a b parser = do
  c <- parser
  if c >= a && c <= b
    then pure c
    else fail "between"
between :: Ord a => a -> a -> A.Parser a -> A.Parser a
between a b parser = do
  c <- parser
  if c >= a && c <= b
    then pure c
    else fail "between"
between a b parser = do
  c <- parser
  if c >= a && c <= b
    then pure c
    else fail "between"