packages feed

bookhound-0.1.12.0: src/Bookhound/Utils/Foldable.hs

module Bookhound.Internal.Foldable where

import Bookhound.Internal.String (indent)
import Data.Foldable             as Foldable (Foldable (toList))
import Data.List                 (intercalate)


hasNone :: Foldable m => m a -> Bool
hasNone = null

hasSome :: Foldable m => m a -> Bool
hasSome = not . hasNone

hasMultiple :: Foldable m => m a -> Bool
hasMultiple xs = all hasSome $ [id, tail] <*> [Foldable.toList xs]


stringify :: (Foldable m) => String -> String -> String -> Int -> m String -> String
stringify sep start end n xs = start <> indent n str <> end
  where
    str = intercalate sep list
    list = toList xs