diff options
Diffstat (limited to 'Jennisys/Jennisys/Utils.fs')
-rw-r--r-- | Jennisys/Jennisys/Utils.fs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Jennisys/Jennisys/Utils.fs b/Jennisys/Jennisys/Utils.fs index 156d427c..5cd8af9d 100644 --- a/Jennisys/Jennisys/Utils.fs +++ b/Jennisys/Jennisys/Utils.fs @@ -74,6 +74,19 @@ let ListToOptionMsg lst errMsg = let ListToOption lst = ListToOptionMsg lst "given list contains more than one element"
+let ListDeduplicate lst =
+ let rec __Dedup lst (visitedSet: System.Collections.Generic.HashSet<_>) acc =
+ match lst with
+ | fs :: rest ->
+ let newAcc =
+ if visitedSet.Add(fs) then
+ acc @ [fs]
+ else
+ acc
+ __Dedup rest visitedSet newAcc
+ | _ -> acc
+ __Dedup lst (new System.Collections.Generic.HashSet<_>()) []
+
// =============================================================
/// ensures: forall i :: 0 <= i < |lst| ==> ret[i] = Some(lst[i])
// =============================================================
|