
Sorry, I meant *Map* is strict in its keys. Set is too, but that's not
relevant to my concern.
On Thu, Jan 27, 2022, 8:34 PM David Feuer
I have one minor operational concern. Set is strict in its keys, so code doesn't have to check whether a key is evaluated when case matching on it. Arg, on the other hand, is lazy in both arguments. So this function throws away evaluatedness information, which is always a bit sad.
Separately, I'd love see:
1. A function going the other way. 2. Unsafe mapMonotonic-style functions generalizing both.
On Thu, Jan 27, 2022, 8:25 PM Joseph C. Sible
wrote: I opened https://github.com/haskell/containers/issues/814 about adding this function to the containers package:
import qualified Data.Map.Internal as Map import qualified Data.Set.Internal as Set import Data.Semigroup (Arg(..))
mapToArgSet :: Map.Map k a -> Set.Set (Arg k a) mapToArgSet Map.Tip = Set.Tip mapToArgSet (Map.Bin sz k v l r) = Set.Bin sz (Arg k v) (mapToArgSet l) (mapToArgSet r)
Does anyone have any suggestions or improvements for this? In particular, I'm sure there's a less clunky name that I just can't think of.
Thanks,
Joseph C. Sible _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries