From dcef89b48691ee746201757f7ad0e1001631d0a7 Mon Sep 17 00:00:00 2001 From: radrow Date: Thu, 15 Jul 2021 20:41:38 +0200 Subject: [PATCH] Add Option.force_msg --- docs/sophia_stdlib.md | 12 +++++++++++- priv/stdlib/Option.aes | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/sophia_stdlib.md b/docs/sophia_stdlib.md index 694629b..64df2d9 100644 --- a/docs/sophia_stdlib.md +++ b/docs/sophia_stdlib.md @@ -1293,7 +1293,17 @@ Escapes `option` wrapping by providing default value for `None`. Option.force(o : option('a)) : 'a ``` -Forcefully escapes `option` wrapping assuming it is `Some`. Throws error on `None`. +Forcefully escapes the `option` wrapping assuming it is `Some`. +Aborts on `None`. + + +#### force_msg +``` +Option.force_msg(o : option('a), err : string) : 'a +``` + +Forcefully escapes the `option` wrapping assuming it is `Some`. +Aborts with `err` error message on `None`. #### contains diff --git a/priv/stdlib/Option.aes b/priv/stdlib/Option.aes index 0e00cd4..45e6594 100644 --- a/priv/stdlib/Option.aes +++ b/priv/stdlib/Option.aes @@ -26,6 +26,12 @@ namespace Option = None => abort("Forced None value") Some(x) => x +/** Assume it is `Some` with custom error message + */ + function force_msg(o : option('a), err : string) : 'a = switch(o) + None => abort(err) + Some(x) => x + function contains(e : 'a, o : option('a)) = o == Some(e) function on_elem(o : option('a), f : 'a => unit) : unit = match((), f, o)