HORIZON HASKELLDocslts/ghc-10.0.x8fef28d2026-11-02Search packagesCtrl K
Theme: |

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8fef28d · 2026-11-02

Modulebin-0.1.4.1Haskell2010

Data.Bin

Binary natural numbers, Bin.

This module is designed to be imported qualified.

Contents
  1. Binary natural numbers
  2. Positive natural numbers
  3. Showing
  4. Extras
  5. Data.Bits
  6. Aliases
Synopsis
  • Packagebin-0.1.4.1
  • Exports26
  • LanguageHaskell2010
  • LicenceGPL-2.0-or-later
  • SourceBin.hs

Binary natural numbers

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.1 · 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.1 · Data.Bin
  • Integral BinDefined in bin-0.1.4.1 · Data.Bin
  • Data BinDefined in bin-0.1.4.1 · Data.Bin
  • Num BinDefined in bin-0.1.4.1 · 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.1 · Data.Bin
  • Real BinDefined in bin-0.1.4.1 · Data.Bin
  • Show BinDefined in bin-0.1.4.1 · Data.Bin

    Bin is printed as Natural.

    To see explicit structure, use explicitShow or explicitShowsPrec

  • Bits BinDefined in bin-0.1.4.1 · Data.Bin
  • NFData BinDefined in bin-0.1.4.1 · Data.Bin
  • Arbitrary BinDefined in bin-0.1.4.1 · Data.Bin
  • CoArbitrary BinDefined in bin-0.1.4.1 · Data.Bin
  • Function BinDefined in bin-0.1.4.1 · Data.Bin
  • Hashable BinDefined in bin-0.1.4.1 · Data.Bin
  • TestEquality SBinDefined in bin-0.1.4.1 · Data.Type.Bin
  • EqP PosDefined in bin-0.1.4.1 · 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.1 · Data.Type.Bin
  • GEq SBinDefined in bin-0.1.4.1 · Data.Type.Bin
  • GNFData SBinDefined in bin-0.1.4.1 · Data.Type.Bin
  • GShow PosDefined in bin-0.1.4.1 · Data.Bin.Pos
  • GShow SBinDefined in bin-0.1.4.1 · Data.Type.Bin
  • OrdP PosDefined in bin-0.1.4.1 · 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
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))"

Positive natural numbers

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.1 · Data.BinP
  • Eq BinPDefined in bin-0.1.4.1 · Data.BinP
  • Integral BinPDefined in bin-0.1.4.1 · Data.BinP
  • Data BinPDefined in bin-0.1.4.1 · Data.BinP
  • Num BinPDefined in bin-0.1.4.1 · Data.BinP
  • Ord BinPDefined in bin-0.1.4.1 · 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.1 · Data.BinP
  • Show BinPDefined in bin-0.1.4.1 · Data.BinP
  • Bits BinPDefined in bin-0.1.4.1 · Data.BinP

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

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

Showing

Extras

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