summaryrefslogtreecommitdiff
path: root/Jennisys/Jennisys/Utils.fs
diff options
context:
space:
mode:
Diffstat (limited to 'Jennisys/Jennisys/Utils.fs')
-rw-r--r--Jennisys/Jennisys/Utils.fs13
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])
// =============================================================