Sha256: 1e0b7fe6c81068cd7e99bd3196f118060eb1320a19f39b97b314b60f88a524af
Contents?: true
Size: 795 Bytes
Versions: 45
Compression:
Stored size: 795 Bytes
Contents
module Series (slices) where import Control.Applicative (liftA2) import Control.Monad (guard) import Data.ByteString.Char8 (ByteString, foldr, length, tails, take) import Data.Function (on) import Data.Maybe (mapMaybe) import Data.Sequence (Seq, empty, fromList, (<|)) import Prelude hiding (foldr, length, take) slices :: Num a => Int -> ByteString -> Seq (Seq a) slices n = fromList . mapMaybe toDigits . takeWhile ((== n) . length) . map (take n) . tails toDigits :: Num a => ByteString -> Maybe (Seq a) toDigits = foldr (liftA2 (<|) . toDigit) (Just empty) toDigit :: Num a => Char -> Maybe a toDigit x = guard (0 <= dec && dec <= 9) >> return (fromIntegral dec) where dec = ((-) `on` fromEnum) x '0'
Version data entries
45 entries across 45 versions & 1 rubygems