HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulebin-0.1.4Haskell2010

Data.Bin

Binary natural numbers, Bin.

This module is designed to be imported qualified.

  • 2 types
  • 24 values
  • Packagebin-0.1.4
  • Exports26
  • LanguageHaskell2010
  • LicenceGPL-2.0-or-later
  • SourceBin.hs

Binary natural numbers

6 declarations
datadata Bin
#

Binary natural numbers.

Numbers are represented in little-endian order, the representation is unique.

Example1 expression
mapM_ (putStrLn .  explicitShow) [0 .. 7]BZBP BEBP (B0 BE)BP (B1 BE)BP (B0 (B0 BE))BP (B1 (B0 BE))BP (B0 (B1 BE))BP (B1 (B1 BE))

Constructors

Instances22Enum, Eq, Integral, Data, Num, Ord, …
  • Enum BinDefined in bin-0.1.4 · Data.Bin
    Example1 expression
    take 10 $ iterate succ BZ[0,1,2,3,4,5,6,7,8,9]
    Example1 expression
    take 10 [BZ ..][0,1,2,3,4,5,6,7,8,9]
  • Eq BinDefined in bin-0.1.4 · Data.Bin
  • Integral BinDefined in bin-0.1.4 · Data.Bin
  • Data BinDefined in bin-0.1.4 · Data.Bin
  • Num BinDefined in bin-0.1.4 · Data.Bin
    Example1 expression
    0 + 2 :: Bin2
    Example1 expression
    1 + 2 :: Bin3
    Example1 expression
    4 * 8 :: Bin32
    Example1 expression
    7 * 7 :: Bin49
  • Ord BinDefined in bin-0.1.4 · Data.Bin
  • Real BinDefined in bin-0.1.4 · Data.Bin
  • Show BinDefined in bin-0.1.4 · Data.Bin

    Bin is printed as Natural.

    To see explicit structure, use explicitShow or explicitShowsPrec

  • Bits BinDefined in bin-0.1.4 · Data.Bin
  • NFData BinDefined in bin-0.1.4 · Data.Bin
  • Arbitrary BinDefined in bin-0.1.4 · Data.Bin
  • CoArbitrary BinDefined in bin-0.1.4 · Data.Bin
  • Function BinDefined in bin-0.1.4 · Data.Bin
  • Hashable BinDefined in bin-0.1.4 · Data.Bin
  • TestEquality SBinDefined in bin-0.1.4 · Data.Type.Bin
  • EqP PosDefined in bin-0.1.4 · Data.Bin.Pos
    Example1 expression
    eqp (top :: Pos Bin4) (top :: Pos Bin6)True
    Example1 expression
    let xs = universe @Bin4; ys = universe @Bin6 in traverse_ print [ [ eqp x y | y <- ys ] | x <- xs ][True,False,False,False,False,False][False,True,False,False,False,False][False,False,True,False,False,False][False,False,False,True,False,False]
  • EqP SBinDefined in bin-0.1.4 · Data.Type.Bin
  • GEq SBinDefined in bin-0.1.4 · Data.Type.Bin
  • GNFData SBinDefined in bin-0.1.4 · Data.Type.Bin
  • GShow PosDefined in bin-0.1.4 · Data.Bin.Pos
  • GShow SBinDefined in bin-0.1.4 · Data.Type.Bin
  • OrdP PosDefined in bin-0.1.4 · Data.Bin.Pos
    Example1 expression
    let xs = universe @Bin4; ys = universe @Bin6 in traverse_ print [ [ comparep x y | y <- ys ] | x <- xs ][EQ,LT,LT,LT,LT,LT][GT,EQ,LT,LT,LT,LT][GT,GT,EQ,LT,LT,LT][GT,GT,GT,EQ,LT,LT]
valuetoNatural :: Bin -> Natural
#

Convert Bin to Natural

Example1 expression
toNatural 00
Example1 expression
toNatural 22
Example1 expression
toNatural $ BP $ B0 $ B1 $ BE6
valuefromNatural :: Natural -> Bin
#

Convert Natural to Nat

Example1 expression
fromNatural 44
Example1 expression
explicitShow (fromNatural 4)"BP (B0 (B0 BE))"
valuetoNat :: Bin -> Nat
#

Convert from Bin to Nat.

Example1 expression
toNat 55
Example1 expression
N.explicitShow (toNat 5)"S (S (S (S (S Z))))"
valuefromNat :: Nat -> Bin
#

Convert from Nat to Bin.

Example1 expression
fromNat 55
Example1 expression
explicitShow (fromNat 5)"BP (B1 (B0 BE))"
valuecata
  1. :: a

    0

  2. -> a

    1

  3. -> (a -> a)

    2x

  4. -> (a -> a)

    2x + 1

  5. -> Bin
  6. -> a
#

Fold Bin.

Positive natural numbers

1 declaration
datadata BinP
#

Non-zero binary natural numbers.

We could have called this type Bin1, but that's used as type alias for promoted BP BE in Data.Type.Bin.

Constructors

Instances23Enum, Eq, Integral, Data, Num, Ord, …
  • Enum BinPDefined in bin-0.1.4 · Data.BinP
  • Eq BinPDefined in bin-0.1.4 · Data.BinP
  • Integral BinPDefined in bin-0.1.4 · Data.BinP
  • Data BinPDefined in bin-0.1.4 · Data.BinP
  • Num BinPDefined in bin-0.1.4 · Data.BinP
  • Ord BinPDefined in bin-0.1.4 · Data.BinP
    Example1 expression
    sort [ 1 .. 9 :: BinP ][1,2,3,4,5,6,7,8,9]
    Example1 expression
    sort $ reverse [ 1 .. 9 :: BinP ][1,2,3,4,5,6,7,8,9]
    Example1 expression
    sort $ [ 1 .. 9 ] ++ [ 1 .. 9 :: BinP ][1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9]
  • Real BinPDefined in bin-0.1.4 · Data.BinP
  • Show BinPDefined in bin-0.1.4 · Data.BinP
  • Bits BinPDefined in bin-0.1.4 · Data.BinP

    NOTE: .&., xor, shiftR and rotateR are __NOT_ implemented. They may make number zero.

  • NFData BinPDefined in bin-0.1.4 · Data.BinP
  • Arbitrary BinPDefined in bin-0.1.4 · Data.BinP
  • CoArbitrary BinPDefined in bin-0.1.4 · Data.BinP
  • Function BinPDefined in bin-0.1.4 · Data.BinP
  • Hashable BinPDefined in bin-0.1.4 · Data.BinP
  • TestEquality SBinPDefined in bin-0.1.4 · Data.Type.BinP
  • EqP PosPDefined in bin-0.1.4 · Data.BinP.PosP
  • EqP SBinPDefined in bin-0.1.4 · Data.Type.BinP
  • GEq SBinPDefined in bin-0.1.4 · Data.Type.BinP
  • GNFData SBinPDefined in bin-0.1.4 · Data.Type.BinP
  • GShow PosPDefined in bin-0.1.4 · Data.BinP.PosP
  • GShow SBinPDefined in bin-0.1.4 · Data.Type.BinP
  • OrdP PosPDefined in bin-0.1.4 · Data.BinP.PosP
  • SNatI n => GShow (PosP' n)Defined in bin-0.1.4 · Data.BinP.PosP

Showing

2 declarations
valueexplicitShow :: Bin -> String
#

show displaying a structure of Bin.

Example1 expression
explicitShow 0"BZ"
Example1 expression
explicitShow 2"BP (B0 BE)"

Extras

3 declarations
valuepredP :: BinP -> Bin
#

This is a total function.

Example1 expression
map predP [1..10][0,1,2,3,4,5,6,7,8,9]

Data.Bits

Aliases

10 declarations