hw-balancedparens-0.4.1.0: src/HaskellWorks/Data/BalancedParens/Internal/Slow/FindCloseN/Generic.hs
module HaskellWorks.Data.BalancedParens.Internal.Slow.FindCloseN.Generic
( findCloseN
) where
import HaskellWorks.Data.BalancedParens.CloseAt
import HaskellWorks.Data.Bits.BitLength
import HaskellWorks.Data.Bits.BitWise
import HaskellWorks.Data.Positioning
findCloseN :: (BitLength a, CloseAt a, TestBit a) => a -> Count -> Count -> Maybe Count
findCloseN v c p = if 0 < p
then if v `closeAt` p
then if c <= 1
then Just p
else findCloseN v (c - 1) (p + 1)
else findCloseN v (c + 1) (p + 1)
else Nothing
{-# INLINE findCloseN #-}