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.MapC

Fcf.Data.MapC

MapC provides an interface to mapping keys to values, which is similar to that 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.

We call this MapC because name Map is reserved to the map-function in Fcf-package. The internal representation is type-level list. We hope that one day the internal representation is based on balanced trees similar to the one used in the containers.

  • 27 types

MapC type

1 declaration
newtypenewtype MapC k v
#

A type corresponding to Map in the containers. We call this MapC because name Map is reserved to the map-function in Fcf-package.

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 :: MapC k 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
  • type Eval (Null ('MapC '[])) = 'TrueDefined in fcf-containers-0.8.2 · Fcf.Data.MapC
  • type Eval (Null ('MapC (_1 ': _2))) = 'FalseDefined in fcf-containers-0.8.2 · Fcf.Data.MapC
datadata Size (a :: MapC k 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 :: k) (b :: MapC k 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 :: k) (b :: MapC k 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 :: k) (b :: MapC k 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 :: MapC k v) (b :: MapC k 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 :: MapC k 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 :: MapC k v) (b :: [k])
#

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) :: [k]= '[]
Instances1Eval
datadata Assocs (a :: MapC k v) (b :: [(k, 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) :: [(k, v)]= '[]
Instances1Eval
  • type Eval (Assocs ('MapC lst)) = lstDefined in fcf-containers-0.8.2 · Fcf.Data.MapC

Construction

5 declarations
datadata Empty (a :: MapC k v)
#

Empty

Example
Example1 expression
:kind! (Eval Empty :: MapC Nat TL.Symbol)(Eval Empty :: MapC Nat TL.Symbol) :: MapC TL.Natural TL.Symbol= 'MapC '[]
Example1 expression
:kind! (Eval Empty :: MapC Int String)(Eval Empty :: MapC Int String) :: MapC Int [Char]= 'MapC '[]

See also the other examples in this module.

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

Singleton

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

Insert

Example
Example1 expression
:kind! Eval (Insert 3 "hih" =<< FromList '[ '(1,"haa"), '(2,"hoo")])Eval (Insert 3 "hih" =<< FromList '[ '(1,"haa"), '(2,"hoo")]) :: MapC                                                                   TL.Natural TL.Symbol= 'MapC '[ '(3, "hih"), '(1, "haa"), '(2, "hoo")]
Instances1Eval
datadata InsertWith (a :: v -> v -> Exp v) (b :: k) (c :: v) (d :: MapC k v) (e :: MapC k 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")]) :: MapC                                                                                TL.Natural TL.Symbol= 'MapC '[ '(5, "xxxa"), '(3, "b")]
Example2 expressions
:kind! Eval (InsertWith AppendSymbol 7 "xxx" =<< FromList '[ '(5,"a"), '(3,"b")])Eval (InsertWith AppendSymbol 7 "xxx" =<< FromList '[ '(5,"a"), '(3,"b")]) :: MapC                                                                                TL.Natural TL.Symbol= 'MapC '[ '(5, "a"), '(3, "b"), '(7, "xxx")]:kind! Eval (InsertWith AppendSymbol 7 "xxx" =<< Empty)Eval (InsertWith AppendSymbol 7 "xxx" =<< Empty) :: MapC                                                      TL.Natural TL.Symbol= 'MapC '[ '(7, "xxx")]
Instances1Eval
datadata Delete (a :: k) (b :: MapC k v) (c :: MapC k v)
#

Delete

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

Combine

3 declarations
datadata Union (a :: MapC k v) (b :: MapC k v) (c :: MapC k 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")])) ) :: MapC                                                                                                     TL.Natural                                                                                                     TL.Symbol= 'MapC '[ '(7, "c"), '(5, "a"), '(3, "b")]
Instances1Eval
datadata Difference (a :: MapC k v) (b :: MapC k v) (c :: MapC k 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")]))) :: MapC                                                                                                         TL.Natural                                                                                                         TL.Symbol= 'MapC '[ '(3, "a")]
Instances1Eval
datadata Intersection (a :: MapC k v) (b :: MapC k v) (c :: MapC k 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")]))) :: MapC                                                                                                           TL.Natural                                                                                                           TL.Symbol= 'MapC '[ '(5, "b")]
Instances1Eval

Modify

7 declarations
datadata Adjust (a :: v -> Exp v) (b :: k) (c :: MapC k v) (d :: MapC k 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")]) :: MapC                                                                               TL.Natural TL.Symbol= 'MapC '[ '(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")]) :: MapC                                                                               TL.Natural TL.Symbol= 'MapC '[ '(5, "a"), '(3, "b")]
Example1 expression
:kind! Eval (Adjust (AppendSymbol "new ") 7 =<< Empty)Eval (Adjust (AppendSymbol "new ") 7 =<< Empty) :: MapC                                                     TL.Natural TL.Symbol= 'MapC '[]
Instances1Eval
  • type Eval (Adjust f k2 ('MapC lst)) = 'MapC (Eval (AdjustHelp f k2 lst))Defined in fcf-containers-0.8.2 · Fcf.Data.MapC
datadata Map (a :: v -> Exp w) (b :: MapC k v) (c :: MapC k w)
#

Map

Example
Example1 expression
:kind! Eval (Fcf.Data.MapC.Map (AppendSymbol "x") =<< FromList '[ '(5,"a"), '(3,"b")])Eval (Fcf.Data.MapC.Map (AppendSymbol "x") =<< FromList '[ '(5,"a"), '(3,"b")]) :: MapC                                                                                     TL.Natural                                                                                     TL.Symbol= 'MapC '[ '(5, "xa"), '(3, "xb")]
Instances1Eval
datadata Foldr (a :: v -> w -> Exp w) (b :: w) (c :: MapC k 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 MapC is not well defined at the moment.

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

Filter

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

FilterWithKey

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

Partition

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

List

2 declarations
datadata FromList (a :: [(k, v)]) (b :: MapC k v)
#

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

Example
Example1 expression
:kind! Eval (FromList '[ '(1,"haa"), '(2,"hoo")])Eval (FromList '[ '(1,"haa"), '(2,"hoo")]) :: MapC                                                TL.Natural TL.Symbol= 'MapC '[ '(1, "haa"), '(2, "hoo")]
Instances1Eval
  • type Eval (FromList lst) = 'MapC lstDefined in fcf-containers-0.8.2 · Fcf.Data.MapC
datadata ToList (a :: MapC k v) (b :: [(k, 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) :: [(k, v)]= '[]
Instances1Eval
  • type Eval (ToList ('MapC lst)) = lstDefined in fcf-containers-0.8.2 · Fcf.Data.MapC