Popularity
9.3
Declining
Activity
0.0
Declining
57
27
29
Monthly Downloads: 221
Programming language: Haskell
License: LicenseRef-OtherLicense
Latest version: v0.4.0.0
dependent-map alternatives and similar packages
Based on the "dependent" category.
Alternatively, view dependent-map alternatives based on common mentions on social networks and blogs.
-
dependent-sum
Dependent sums and supporting typeclasses for comparing and displaying them -
dependent-state
Control structure similar to Control.Monad.State, ...
Static code analysis for 29 languages.
Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.
Promo
www.sonarqube.org
Do you think we are missing an alternative of dependent-map or a related project?
Popular Comparisons
README
dependent-map

This library defines a dependently-typed finite map type. It is derived from Data.Map.Map
in the containers
package, but rather than (conceptually) storing pairs indexed by the first component, it stores DSum
s (from the dependent-sum
package) indexed by tag. For example
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module Example where
import Data.Constraint.Extras.TH (deriveArgDict)
import Data.Dependent.Map (DMap, fromList, singleton, union, unionWithKey)
import Data.Dependent.Sum ((==>))
import Data.Functor.Identity (Identity(..))
import Data.GADT.Compare.TH (deriveGCompare, deriveGEq)
import Data.GADT.Show.TH (deriveGShow)
data Tag a where
StringKey :: Tag String
IntKey :: Tag Int
DoubleKey :: Tag Double
deriveGEq ''Tag
deriveGCompare ''Tag
deriveGShow ''Tag
deriveArgDict ''Tag
x :: DMap Tag Identity
x = fromList [DoubleKey ==> pi, StringKey ==> "hello there"]
y :: DMap Tag Identity
y = singleton IntKey (Identity 42)
z :: DMap Tag Identity
z = y `union` fromList [DoubleKey ==> -1.1415926535897931]
addFoo :: Tag v -> Identity v -> Identity v -> Identity v
addFoo IntKey (Identity x) (Identity y) = Identity $ x + y
addFoo DoubleKey (Identity x) (Identity y) = Identity $ x + y
addFoo _ x _ = x
main :: IO ()
main = mapM_ print
[ x, y, z
, unionWithKey addFoo x z
]