public static FSharpMap <U, V> MapKey <K, V, U>(this FSharpMap <K, V> d, Func <K, U> f) => MapModule.OfSeq(d.Select(kv => Tuple.Create(f(kv.Key), kv.Value)));
 // The mapvalues could theoretically be sped up someday through more structural control
 public static FSharpMap <K, U> MapValue <K, V, U>(this FSharpMap <K, V> d, Func <V, U> f) => MapModule.OfSeq(d.Select(kv => Tuple.Create(kv.Key, f(kv.Value))));