aboutsummaryrefslogtreecommitdiff
path: root/src/Util/OptionList.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/Util/OptionList.v')
-rw-r--r--src/Util/OptionList.v5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/Util/OptionList.v b/src/Util/OptionList.v
index c2157346e..4b88dd9a3 100644
--- a/src/Util/OptionList.v
+++ b/src/Util/OptionList.v
@@ -25,6 +25,11 @@ Module Option.
| x :: xs => (x <- x; @bind_list A B xs (fun xs => f (x :: xs)))
end%option%list.
+ Definition lift {A} (ls : list (option A)) : option (list A)
+ := fold_right (fun x xs => x <- x; xs <- xs; Some (x :: xs))%option
+ (Some nil)
+ ls.
+
Module Export Notations.
Notation "A <-- X ; B" := (bind_list X (fun A => B%option)) : option_scope.
End Notations.