module HaskellWorks.Data.MQuery.AtLeastSize where

class AtLeastSize a where
  atLeastSize :: a -> Int -> Bool

instance AtLeastSize [a] where
  atLeastSize :: [a] -> Int -> Bool
atLeastSize  [a]
_      Int
0 = Bool
True
  atLeastSize (a
_:[a]
as)  Int
n | Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> Int
0 = [a] -> Int -> Bool
forall a. AtLeastSize a => a -> Int -> Bool
atLeastSize [a]
as (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
  atLeastSize  [a]
_      Int
_ = Bool
False