HORIZON HASKELLDocslts/ghc-10.0.x8174fa42026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8174fa4 · 2026-10-11

Modulecontainers-0.8Haskell2010

Data.IntSet.Internal.IntTreeCommons

WARNING

This module is considered internal.

The Package Versioning Policy does not apply.

The contents of this module may change in any way whatsoever and without any warning between minor versions of this package.

Authors importing this module are expected to track development closely.

Description

This module defines common constructs used by both Data.IntSet and Data.IntMap.

  • 4 types
  • 7 values
  • Packagecontainers-0.8
  • Exports11
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceIntTreeCommons.hs
newtypenewtype Prefix
#

A Prefix represents some prefix of high-order bits of an Int.

A Prefix is usually considered in the context of a Bin or Bin.

Constructors

Instances2Eq, Lift
  • Eq PrefixDefined in containers-0.8 · Data.IntSet.Internal.IntTreeCommons
  • Lift PrefixDefined in containers-0.8 · Data.IntSet.Internal.IntTreeCommons
valuenomatch :: Int -> Prefix -> Bool
#

Whether the Int does not start with the given Prefix.

An Int starts with a Prefix if it shares the high bits with the internal Int value of the Prefix up to the mask bit.

nomatch is usually used to determine whether a key belongs in a Bin, since all keys in a Bin share a Prefix.

valueleft :: Int -> Prefix -> Bool
#

Whether the Int is to the left of the split created by a Bin with this Prefix.

This does not imply that the Int belongs in this Bin. That fact is usually determined first using nomatch.

valuesignBranch :: Prefix -> Bool
#

Whether this Prefix splits a Bin at the sign bit.

This can only be True at the top level. If it is true, the left child contains non-negative keys and the right child contains negative keys.

datadata TreeTreeBranch
#

A TreeTreeBranch is returned by treeTreeBranch to indicate how two Bins relate to each other.

Consider that A and B are the Bins whose Prefixes are given to treeTreeBranch as the first and second arguments respectively.

Constructors

  • ABL

    A contains B in the left child

  • ABR

    A contains B in the right child

  • BAL

    B contains A in the left child

  • BAR

    B contains A in the right child

  • EQL

    A and B have equal prefixes

  • NOM

    A and B have prefixes that do not match

valuemask :: Key -> Int -> Int
#

The prefix of key i up to (but not including) the switching bit m.

valuebranchMask :: Int -> Int -> Int
#

The first switching bit where the two prefixes disagree.

Precondition for defined behavior: p1 /= p2