úÎ!+ô'î;      !"#$%&'()*+,-./0123456789:(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> provisional non-portable Trustworthy 1456>SX' witherableLike ;7, but you can remove elements instead of updating them.A definition of ! must satisfy the following laws: identity (< . Just) "a < conservation (= > . f) "a ? f composition@ . = ( f) .  g "a  (@ . = ( f) . g))Parametricity implies the naturality law: t .  f "a  (t . f) witherable ? f "a  (= > . f) witherable Monadic variant of .. This may have more efficient implementation. witherable @ . = ( f) .  g "a  (x -> @ $ = (b -> (b&&)  $ f x) (g x) witherableLike A, but it include B effects.Formally, the class  represents a functor from  Kleisli Maybe to Hask.A definition of ! must satisfy the following laws: identity Just "a id conservation (Just . f) "a = f composition f .  g "a  (f <=< g) witherableLike C. witherable  "a  D witherable  f .  g "a filter (E (F) f g) witherable)This is used to characterize and clone a   . Since FilterLike (Peat a b) s t a bA is monomorphic, it can be used to store a filter in a container.  witherable A simple  .  witherable A simple .  witherableA   is like a  Xhttp://hackage.haskell.org/package/lens-4.13.2.1/docs/Control-Lens-Type.html#t:Traversal Traversal#, but you can also remove targets. witherable'This type allows combinators to take a   specializing the parameter f. witherableReconstitute a   from its monomorphic form. witherable is actually D, but left for consistency. witherable  "a G witherable through a filter. witherable through a filter. witherable through a filter. witherable1Filter each element of a structure targeted by a  . witherable  = G  witherable/Remove the duplicate elements through a filter. witherableIRemove the duplicate elements through a filter. It is often faster than ., especially when the comparison is expensive. witherablezRemoves duplicate elements from a list, keeping only the first occurrence. This is asymptotically faster than using  from  Data.List. witherablejRemoves duplicate elements from a list, keeping only the first occurrence. This is usually faster than =, especially for things that have a slow comparison (like H).   I       !"#$%&'()*+,-./0123456789:;<=>?@>AB>AC>DE>?F>GH>AI>DJ>K >AL>AMNOP>AQ>ARS%witherable-0.3-KIiducUZ1I19ZafLKcw4pnData.Witherable Data.Listnub WitherablewitherwitherMfilterA FilterablemapMaybe catMaybesfilterPeatrunPeatFilter' FilterLike'Filter FilterLike cloneFilterwitherOf forMaybeOf mapMaybeOf catMaybesOf filterAOffilterOfforMaybeordNubOf hashNubOfordNubhashNub$fApplicativePeat $fFunctorPeat$fFilterableMaybeT$fFilterableIdentityT$fFilterableSum$fFilterableProduct$fFilterableCompose$fFilterableSeq$fFilterableVector$fFilterableConst$fFilterableProxy$fFilterableHashMap$fFilterableMap$fFilterableIntMap$fFilterable[]$fFilterableEither$fFilterableMaybe$fWitherableMaybeT$fWitherableIdentityT$fWitherableSum$fWitherableProduct$fWitherableCompose$fWitherableSeq$fWitherableVector$fWitherableConst$fWitherableProxy$fWitherableHashMap$fWitherableMap$fWitherableIntMap$fWitherable[]$fWitherableEither$fWitherableMaybebaseData.Traversable TraversableGHC.Basepurefmap GHC.MaybeJusttraverseData.Functor.ComposeComposeFunctorMaybe Data.MaybeidliftA2ghc-prim GHC.Classes&&flipString