{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}

-- |

-- Module      : OAlg.Data.Filterable

-- Description : filtrations.

-- Copyright   : (c) Erich Gut

-- License     : BSD3

-- Maintainer  : zerich.gut@gmail.com

--

-- filtrations.

module OAlg.Data.Filterable
  (  Filterable(..)
  )
  where

import qualified Data.List as L

--------------------------------------------------------------------------------

-- Filterable -


-- | filtering.

class Filterable s where
  filter :: (x -> Bool) -> s x -> s x

instance Filterable [] where
  filter :: forall x. (x -> Bool) -> [x] -> [x]
filter = (x -> Bool) -> [x] -> [x]
forall x. (x -> Bool) -> [x] -> [x]
L.filter