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

Modulefcf-containers-0.8.2Haskell2010

Fcf.Data.NatMap

Fcf.Data.NatMap

NatMap provides an interface to mapping keys (Nat's) to values, which is similar to IntMap given by the containers-package. Note that the this module still misses some of the methods that can be found in containers. If you need some, please do open up an issue or better, make a PR.

Many of the examples are from containers-package.

  • 27 types

NatMap type

1 declaration
newtypenewtype NatMap v
#

A type corresponding to IntMap in the containers.

The representation is based on type-level lists. Please, do not use that fact but rather use the exposed API. (We hope to change the internal data type to balanced tree similar to the one used in containers. See TODO.md.)

Constructors

Instances17KnownVal, Eval, …

Query

9 declarations
datadata Null (a :: NatMap v) (b :: Bool)
#

Null

Example
Example2 expressions
:kind! Eval (Null =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Null =<< FromList '[ '(5,"a"), '(3,"b")]) :: Bool= 'False:kind! Eval (Null =<< Empty)Eval (Null =<< Empty) :: Bool= 'True
Instances2Eval
datadata Size (a :: NatMap v) (b :: Nat)
#

Size

Example
Example1 expression
:kind! Eval (Size =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Size =<< FromList '[ '(5,"a"), '(3,"b")]) :: TL.Natural= 2
Instances1Eval
datadata Lookup (a :: Nat) (b :: NatMap v) (c :: Maybe v)
#

Lookup

Example
Example1 expression
:kind! Eval (Lookup 5 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Lookup 5 =<< FromList '[ '(5,"a"), '(3,"b")]) :: Maybe                                                         TL.Symbol= 'Just "a"
Example1 expression
:kind! Eval (Lookup 7 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Lookup 7 =<< FromList '[ '(5,"a"), '(3,"b")]) :: Maybe                                                         TL.Symbol= 'Nothing
Instances2Eval
datadata Member (a :: Nat) (b :: NatMap v) (c :: Bool)
#

Member

Example
Example2 expressions
:kind! Eval (Member 5 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Member 5 =<< FromList '[ '(5,"a"), '(3,"b")]) :: Bool= 'True:kind! Eval (Member 7 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Member 7 =<< FromList '[ '(5,"a"), '(3,"b")]) :: Bool= 'False
Instances1Eval
datadata NotMember (a :: Nat) (b :: NatMap v) (c :: Bool)
#

NotMember

Example
Example2 expressions
:kind! Eval (NotMember 5 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (NotMember 5 =<< FromList '[ '(5,"a"), '(3,"b")]) :: Bool= 'False:kind! Eval (NotMember 7 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (NotMember 7 =<< FromList '[ '(5,"a"), '(3,"b")]) :: Bool= 'True
Instances1Eval
datadata Disjoint (a :: NatMap v) (b :: NatMap v) (c :: Bool)
#

Disjoint

Example
Example1 expression
:kind! Eval (Disjoint (Eval (FromList '[ '(3,"a"), '(5,"b")])) (Eval (FromList '[ '(5,"B"), '(7,"C")])))Eval (Disjoint (Eval (FromList '[ '(3,"a"), '(5,"b")])) (Eval (FromList '[ '(5,"B"), '(7,"C")]))) :: Bool= 'False
Example2 expressions
:kind! Eval (Disjoint (Eval (FromList '[ '(3,"a"), '(5,"b")])) (Eval (FromList '[ '(2,"B"), '(7,"C")])))Eval (Disjoint (Eval (FromList '[ '(3,"a"), '(5,"b")])) (Eval (FromList '[ '(2,"B"), '(7,"C")]))) :: Bool= 'True:kind! Eval (Disjoint (Eval Empty) (Eval Empty))Eval (Disjoint (Eval Empty) (Eval Empty)) :: Bool= 'True
Instances1Eval
datadata Elems (a :: NatMap v) (b :: [v])
#

Elems

Example
Example2 expressions
:kind! Eval (Elems =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Elems =<< FromList '[ '(5,"a"), '(3,"b")]) :: [TL.Symbol]= '["a", "b"]:kind! Eval (Elems =<< Empty)Eval (Elems =<< Empty) :: [v]= '[]
Instances1Eval
datadata Keys (a :: NatMap v) (b :: [Nat])
#

Keys

Example
Example2 expressions
:kind! Eval (Keys =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Keys =<< FromList '[ '(5,"a"), '(3,"b")]) :: [TL.Natural]= '[5, 3]:kind! Eval (Keys =<< Empty)Eval (Keys =<< Empty) :: [TL.Natural]= '[]
Instances1Eval
datadata Assocs (a :: NatMap v) (b :: [(Nat, v)])
#

Assocs

Example
Example2 expressions
:kind! Eval (Assocs =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Assocs =<< FromList '[ '(5,"a"), '(3,"b")]) :: [(TL.Natural,                                                       TL.Symbol)]= '[ '(5, "a"), '(3, "b")]:kind! Eval (Assocs =<< Empty)Eval (Assocs =<< Empty) :: [(TL.Natural, v)]= '[]
Instances1Eval
  • type Eval (Assocs ('NatMap lst)) = lstDefined in fcf-containers-0.8.2 · Fcf.Data.NatMap

Construction

5 declarations
datadata Empty (a :: NatMap v)
#

Empty

Example
Example1 expression
:kind! (Eval Empty :: NatMap TL.Symbol)(Eval Empty :: NatMap TL.Symbol) :: NatMap TL.Symbol= 'NatMap '[]
Example1 expression
:kind! (Eval Empty :: NatMap String)(Eval Empty :: NatMap String) :: NatMap [Char]= 'NatMap '[]

See also the other examples in this module.

Instances1Eval
  • type Eval Empty = 'NatMap '[]Defined in fcf-containers-0.8.2 · Fcf.Data.NatMap
datadata Singleton (a :: Nat) (b :: v) (c :: NatMap v)
#

Singleton

Example
Example1 expression
:kind! Eval (Singleton 1 "haa")Eval (Singleton 1 "haa") :: NatMap TL.Symbol= 'NatMap '[ '(1, "haa")]
Instances1Eval
  • type Eval (Singleton k v2) = 'NatMap '['(k, v2)]Defined in fcf-containers-0.8.2 · Fcf.Data.NatMap
datadata Insert (a :: Nat) (b :: v) (c :: NatMap v) (d :: NatMap v)
#

Insert

Example
Example1 expression
:kind! Eval (Insert 3 "hih" =<< FromList '[ '(1,"haa"), '(2,"hoo")])Eval (Insert 3 "hih" =<< FromList '[ '(1,"haa"), '(2,"hoo")]) :: NatMap                                                                   TL.Symbol= 'NatMap '[ '(3, "hih"), '(1, "haa"), '(2, "hoo")]
Instances1Eval
datadata InsertWith (a :: v -> v -> Exp v) (b :: Nat) (c :: v) (d :: NatMap v) (e :: NatMap v)
#

InsertWith

if old there, map

if no old, add

Example
Example1 expression
:kind! Eval (InsertWith AppendSymbol 5 "xxx" =<< FromList '[ '(5,"a"), '(3,"b")])Eval (InsertWith AppendSymbol 5 "xxx" =<< FromList '[ '(5,"a"), '(3,"b")]) :: NatMap                                                                                TL.Symbol= 'NatMap '[ '(5, "xxxa"), '(3, "b")]
Example1 expression
:kind! Eval (InsertWith AppendSymbol 7 "xxx" =<< FromList '[ '(5,"a"), '(3,"b")])Eval (InsertWith AppendSymbol 7 "xxx" =<< FromList '[ '(5,"a"), '(3,"b")]) :: NatMap                                                                                TL.Symbol= 'NatMap '[ '(5, "a"), '(3, "b"), '(7, "xxx")]
Example1 expression
:kind! Eval (InsertWith AppendSymbol 7 "xxx" =<< Empty)Eval (InsertWith AppendSymbol 7 "xxx" =<< Empty) :: NatMap                                                      TL.Symbol= 'NatMap '[ '(7, "xxx")]
Instances1Eval
datadata Delete (a :: Nat) (b :: NatMap v) (c :: NatMap v)
#

Delete

Example
Example1 expression
:kind! Eval (Delete 5 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Delete 5 =<< FromList '[ '(5,"a"), '(3,"b")]) :: NatMap                                                         TL.Symbol= 'NatMap '[ '(3, "b")]
Example1 expression
:kind! Eval (Delete 7 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Delete 7 =<< FromList '[ '(5,"a"), '(3,"b")]) :: NatMap                                                         TL.Symbol= 'NatMap '[ '(5, "a"), '(3, "b")]
Example1 expression
:kind! Eval (Delete 7 =<< Empty)Eval (Delete 7 =<< Empty) :: NatMap v= 'NatMap '[]
Instances1Eval

Combine

3 declarations
datadata Union (a :: NatMap v) (b :: NatMap v) (c :: NatMap v)
#

Union

Example
Example1 expression
:kind! Eval (Union (Eval (FromList '[ '(5,"a"), '(3,"b")])) (Eval (FromList '[ '(5,"A"), '(7,"c")])) )Eval (Union (Eval (FromList '[ '(5,"a"), '(3,"b")])) (Eval (FromList '[ '(5,"A"), '(7,"c")])) ) :: NatMap                                                                                                     TL.Symbol= 'NatMap '[ '(7, "c"), '(5, "a"), '(3, "b")]
Instances1Eval
datadata Difference (a :: NatMap v) (b :: NatMap v) (c :: NatMap v)
#

Difference

Example
Example1 expression
:kind! Eval (Difference (Eval (FromList '[ '(3,"a"), '(5,"b")])) (Eval (FromList '[ '(5,"B"), '(7,"C")])))Eval (Difference (Eval (FromList '[ '(3,"a"), '(5,"b")])) (Eval (FromList '[ '(5,"B"), '(7,"C")]))) :: NatMap                                                                                                         TL.Symbol= 'NatMap '[ '(3, "a")]
Instances1Eval
datadata Intersection (a :: NatMap v) (b :: NatMap v) (c :: NatMap v)
#

Intersection

Example
Example1 expression
:kind! Eval (Intersection (Eval (FromList '[ '(3,"a"), '(5,"b")])) (Eval (FromList '[ '(5,"B"), '(7,"C")])))Eval (Intersection (Eval (FromList '[ '(3,"a"), '(5,"b")])) (Eval (FromList '[ '(5,"B"), '(7,"C")]))) :: NatMap                                                                                                           TL.Symbol= 'NatMap '[ '(5, "b")]
Instances1Eval

Modify

7 declarations
datadata Adjust (a :: v -> Exp v) (b :: Nat) (c :: NatMap v) (d :: NatMap v)
#

Adjust

Example
Example1 expression
:kind! Eval (Adjust (AppendSymbol "new ") 5 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Adjust (AppendSymbol "new ") 5 =<< FromList '[ '(5,"a"), '(3,"b")]) :: NatMap                                                                               TL.Symbol= 'NatMap '[ '(5, "new a"), '(3, "b")]
Example1 expression
:kind! Eval (Adjust (AppendSymbol "new ") 7 =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Adjust (AppendSymbol "new ") 7 =<< FromList '[ '(5,"a"), '(3,"b")]) :: NatMap                                                                               TL.Symbol= 'NatMap '[ '(5, "a"), '(3, "b")]
Example1 expression
:kind! Eval (Adjust (AppendSymbol "new ") 7 =<< Empty)Eval (Adjust (AppendSymbol "new ") 7 =<< Empty) :: NatMap TL.Symbol= 'NatMap '[]
Instances1Eval
datadata Map (a :: v -> Exp w) (b :: NatMap v) (c :: NatMap w)
#

Map

Example
Example1 expression
:kind! Eval (Fcf.Data.NatMap.Map (AppendSymbol "x") =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Fcf.Data.NatMap.Map (AppendSymbol "x") =<< FromList '[ '(5,"a"), '(3,"b")]) :: NatMap                                                                                       TL.Symbol= 'NatMap '[ '(5, "xa"), '(3, "xb")]
Instances1Eval
datadata Foldr (a :: v -> w -> Exp w) (b :: w) (c :: NatMap v) (d :: w)
#

Foldr

Fold the values in the map using the given right-associative binary operator, such that 'foldr f z == foldr f z . elems'.

Note: the order of values in NatMap is not well defined at the moment.

Example
Example1 expression
:kind! Eval (Fcf.Data.NatMap.Foldr (+) 0  =<< (FromList '[ '(1,1), '(2,2)]))Eval (Fcf.Data.NatMap.Foldr (+) 0  =<< (FromList '[ '(1,1), '(2,2)])) :: TL.Natural= 3
Instances1Eval
datadata Filter (a :: v -> Exp Bool) (b :: NatMap v) (c :: NatMap v)
#

Filter

Example
Example1 expression
:kind! Eval (Filter ((>=) 35) =<< FromList '[ '(5,50), '(3,30)])Eval (Filter ((>=) 35) =<< FromList '[ '(5,50), '(3,30)]) :: NatMap                                                               TL.Natural= 'NatMap '[ '(3, 30)]
Instances1Eval
datadata FilterWithKey (a :: Nat -> v -> Exp Bool) (b :: NatMap v) (c :: NatMap v)
#

FilterWithKey

Example
Example1 expression
:kind! Eval (FilterWithKey (>=) =<< FromList '[ '(3,5), '(6,4)])Eval (FilterWithKey (>=) =<< FromList '[ '(3,5), '(6,4)]) :: NatMap                                                               TL.Natural= 'NatMap '[ '(6, 4)]
Instances1Eval
datadata Partition (a :: v -> Exp Bool) (b :: NatMap v) (c :: (NatMap v, NatMap v))
#

Partition

Example
Example1 expression
:kind! Eval (Partition ((>=) 35) =<< FromList '[ '(5,50), '(3,30)])Eval (Partition ((>=) 35) =<< FromList '[ '(5,50), '(3,30)]) :: (NatMap                                                                   TL.Natural,                                                                 NatMap TL.Natural)= '( 'NatMap '[ '(3, 30)], 'NatMap '[ '(5, 50)])
Instances1Eval

List

2 declarations
datadata FromList (a :: [(Nat, v)]) (b :: NatMap v)
#

Use FromList to construct a NatMap from type-level list.

Example
Example1 expression
:kind! Eval (FromList '[ '(1,"haa"), '(2,"hoo")])Eval (FromList '[ '(1,"haa"), '(2,"hoo")]) :: NatMap TL.Symbol= 'NatMap '[ '(1, "haa"), '(2, "hoo")]
Instances1Eval
datadata ToList (a :: NatMap v) (b :: [(Nat, v)])
#

ToList

Example
Example2 expressions
:kind! Eval (ToList =<< FromList '[ '(5,"a"), '(3,"b")])Eval (ToList =<< FromList '[ '(5,"a"), '(3,"b")]) :: [(TL.Natural,                                                       TL.Symbol)]= '[ '(5, "a"), '(3, "b")]:kind! Eval (ToList =<< Empty)Eval (ToList =<< Empty) :: [(TL.Natural, v)]= '[]
Instances1Eval
  • type Eval (ToList ('NatMap lst)) = lstDefined in fcf-containers-0.8.2 · Fcf.Data.NatMap