Skip to content

Commit 83c6440

Browse files
authored
Remove enumerator in map.find (#10197)
1 parent 3442066 commit 83c6440

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/fsharp/FSharp.Core/map.fs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ type Map<[<EqualityConditionalOn>]'Key, [<EqualityConditionalOn; ComparisonCondi
540540
member __.OnDeserialized(context: System.Runtime.Serialization.StreamingContext) =
541541
ignore context
542542
comparer <- LanguagePrimitives.FastGenericComparer<'Key>
543-
tree <- serializedData |> Array.map (fun (KeyValue(k, v)) -> (k, v)) |> MapTree.ofArray comparer
543+
tree <- serializedData |> Array.map (fun kvp -> kvp.Key, kvp.Value) |> MapTree.ofArray comparer
544544
serializedData <- null
545545

546546
static member Empty : Map<'Key, 'Value> =
@@ -670,7 +670,8 @@ type Map<[<EqualityConditionalOn>]'Key, [<EqualityConditionalOn; ComparisonCondi
670670
let m1 = e1.MoveNext()
671671
let m2 = e2.MoveNext()
672672
(m1 = m2) && (not m1 ||
673-
(let e1c, e2c = e1.Current, e2.Current
673+
(let e1c = e1.Current
674+
let e2c = e2.Current
674675
((e1c.Key = e2c.Key) && (Unchecked.equals e1c.Value e2c.Value) && loop())))
675676
loop()
676677
| _ -> false
@@ -852,19 +853,19 @@ module Map =
852853

853854
[<CompiledName("FoldBack")>]
854855
let foldBack<'Key, 'T, 'State when 'Key : comparison> folder (table: Map<'Key, 'T>) (state:'State) =
855-
MapTree.foldBack folder table.Tree state
856+
MapTree.foldBack folder table.Tree state
856857

857858
[<CompiledName("ToSeq")>]
858859
let toSeq (table: Map<_, _>) =
859860
table |> Seq.map (fun kvp -> kvp.Key, kvp.Value)
860861

861862
[<CompiledName("FindKey")>]
862863
let findKey predicate (table : Map<_, _>) =
863-
table |> toSeq |> Seq.pick (fun (k, v) -> if predicate k v then Some k else None)
864+
table |> Seq.pick (fun kvp -> let k = kvp.Key in if predicate k kvp.Value then Some k else None)
864865

865866
[<CompiledName("TryFindKey")>]
866867
let tryFindKey predicate (table : Map<_, _>) =
867-
table |> toSeq |> Seq.tryPick (fun (k, v) -> if predicate k v then Some k else None)
868+
table |> Seq.tryPick (fun kvp -> let k = kvp.Key in if predicate k kvp.Value then Some k else None)
868869

869870
[<CompiledName("OfList")>]
870871
let ofList (elements: ('Key * 'Value) list) =

0 commit comments

Comments
 (0)