Hoogle Search
Within LTS Haskell 24.45 (ghc-9.10.3)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
nonEmptyMap :: Map k a -> Maybe (NEMap k a)nonempty-containers Data.Map.NonEmpty O(log n). Smart constructor for an NEMap from a Map. Returns Nothing if the Map was originally actually empty, and Just n with an NEMap, if the Map was not empty. nonEmptyMap and maybe empty toMap form an isomorphism: they are perfect structure-preserving inverses of eachother. See IsNonEmpty for a pattern synonym that lets you "match on" the possiblity of a Map being an NEMap.
nonEmptyMap (Data.Map.fromList [(3,"a"), (5,"b")]) == Just (fromList ((3,"a") :| [(5,"b")]))
-
nonempty-containers Data.Map.NonEmpty O(log n). Convert a non-empty map back into a normal possibly-empty map, for usage with functions that expect Map. Can be thought of as "obscuring" the non-emptiness of the map in its type. See the IsNotEmpty pattern. nonEmptyMap and maybe empty toMap form an isomorphism: they are perfect structure-preserving inverses of eachother.
toMap (fromList ((3,"a") :| [(5,"b")])) == Data.Map.fromList [(3,"a"), (5,"b")]
unsafeFromMap :: Map k a -> NEMap k anonempty-containers Data.Map.NonEmpty O(log n). Unsafe version of nonEmptyMap. Coerces a Map into an NEMap, but is undefined (throws a runtime exception when evaluation is attempted) for an empty Map.
-
nonempty-containers Data.Map.NonEmpty.Internal A non-empty (by construction) map from keys k to values a. At least one key-value pair exists in an NEMap k v at all times. Functions that take an NEMap can safely operate on it with the assumption that it has at least one key-value pair. Functions that return an NEMap provide an assurance that the result has at least one key-value pair. Data.Map.NonEmpty re-exports the API of Data.Map, faithfully reproducing asymptotics, typeclass constraints, and semantics. Functions that ensure that input and output maps are both non-empty (like insert) return NEMap, but functions that might potentially return an empty map (like delete) return a Map instead. You can directly construct an NEMap with the API from Data.Map.NonEmpty; it's more or less the same as constructing a normal Map, except you don't have access to empty. There are also a few ways to construct an NEMap from a Map:
- The nonEmptyMap smart constructor will convert a Map k a into a Maybe (NEMap k a), returning Nothing if the original Map was empty.
- You can use the insertMap family of functions to insert a value into a Map to create a guaranteed NEMap.
- You can use the IsNonEmpty and IsEmpty patterns to "pattern match" on a Map to reveal it as either containing a NEMap or an empty map.
- withNonEmpty offers a continuation-based interface for deconstructing a Map and treating it as if it were an NEMap.
NEMap :: k -> a -> !Map k a -> NEMap k anonempty-containers Data.Map.NonEmpty.Internal No documentation available.
foldMapWithKey :: Semigroup m => (k -> a -> m) -> NEMap k a -> mnonempty-containers Data.Map.NonEmpty.Internal O(n). Fold the keys and values in the map using the given semigroup, such that
foldMapWithKey f = fold1 . mapWithKey f
This can be an asymptotically faster than foldrWithKey or foldlWithKey for some monoids.insertMaxMap :: k -> a -> Map k a -> Map k anonempty-containers Data.Map.NonEmpty.Internal O(log n). Insert new key and value into a map where keys are strictly less than the new key. That is, the new key must be strictly greater than all keys present in the Map. /The precondition is not checked./ While this has the same asymptotics as Data.Map.insert, it saves a constant factor for key comparison (so may be helpful if comparison is expensive) and also does not require an Ord instance for the key type.
insertMinMap :: k -> a -> Map k a -> Map k anonempty-containers Data.Map.NonEmpty.Internal O(log n). Insert new key and value into a map where keys are strictly greater than the new key. That is, the new key must be strictly less than all keys present in the Map. /The precondition is not checked./ While this has the same asymptotics as Data.Map.insert, it saves a constant factor for key comparison (so may be helpful if comparison is expensive) and also does not require an Ord instance for the key type.
nemMap :: NEMap k a -> !Map k anonempty-containers Data.Map.NonEmpty.Internal No documentation available.
nonEmptyMap :: Map k a -> Maybe (NEMap k a)nonempty-containers Data.Map.NonEmpty.Internal O(log n). Smart constructor for an NEMap from a Map. Returns Nothing if the Map was originally actually empty, and Just n with an NEMap, if the Map was not empty. nonEmptyMap and maybe empty toMap form an isomorphism: they are perfect structure-preserving inverses of eachother. See IsNonEmpty for a pattern synonym that lets you "match on" the possiblity of a Map being an NEMap.
nonEmptyMap (Data.Map.fromList [(3,"a"), (5,"b")]) == Just (fromList ((3,"a") :| [(5,"b")]))