On 30.05.2009, at 17:11, Stuart Halloway wrote: > clojure.contrib.generic.functor.fmap will return a map with values > updated by a function. What if I wany *keys* updated by a function? > Does this exist yet? If not, what should I name it for inclusion in > contrib?
Speaking strictly from an implementation point of view, you could add a type tag to your map that identifies it as a "map for which fmap acts on keys", and implement the multimethod fmap for that type. However, transforming keys is a much less well-defined operation than transforming values. You can consider a map a function from keys to values; fmap then returns the composition of that function with an arbitrary function f. That's always well-defined. A transformation of keys can lead to ambiguities: what if two different keys are transformed to the same new key, but the associated values differ? For this reason, the operation you want does not satisfy the conditions for fmap. Finally, I don't know of any other module that implements such a function, perhaps because of the ambiguity problem. Konrad. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---
