CurryInfo: containers-3.0.0 / Data.Map.difference

definition:
 
difference :: Ord k => Map k a -> Map k b -> Map k a
difference Tip _ = Tip
difference m1@(Bin _ _ _ _ _) Tip = m1
difference m1@(Bin _ _ _ _ _) (Bin split_key2 _ _ left2 right2)
  = glueVBal (difference lts left2) (difference gts right2)
       -- The two can be way different, so we need glueVBal
  where
    lts = splitLT m1 split_key2  -- NB gt and lt, so the equal ones
    gts = splitGT m1 split_key2  -- are not in either.
demand:
 argument 2
deterministic:
 deterministic operation
documentation:
 
(difference a1 a2) deletes from a1 any bindings which are bound in a2
failfree:
 <FAILING>
indeterministic:
 referentially transparent operation
infix:
 no fixity defined
iotype:
 {(_,{Tip},_) |-> {Tip} || (_,{Bin},{Tip}) |-> {Bin} || (_,{Bin},{Bin}) |-> _}
name:
 difference
precedence:
 no precedence defined
result-values:
 _
signature:
 Prelude.Ord a => Map a b -> Map a c -> Map a b
solution-complete:
 operation might suspend on free variables
terminating:
 possibly non-terminating
totally-defined:
 possibly non-reducible on same data term