From dcef89b48691ee746201757f7ad0e1001631d0a7 Mon Sep 17 00:00:00 2001 From: radrow Date: Thu, 15 Jul 2021 20:41:38 +0200 Subject: [PATCH 1/2] 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) -- 2.30.2 From 0320ac959be7d5f131d6d6bbd32982144d469d6e Mon Sep 17 00:00:00 2001 From: radrow Date: Thu, 15 Jul 2021 20:43:11 +0200 Subject: [PATCH 2/2] CHANGELOG update --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea32d45..da4200e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +- `Option.force_msg` ### Changed ### Removed -- 2.30.2