Add Option.force_msg #819

Merged
zxq9 merged 2 commits from option-force-msg into master 2021-08-03 18:39:53 +09:00
3 changed files with 18 additions and 1 deletions

View File

@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
### Added ### Added
- `Option.force_msg`
### Changed ### Changed
### Removed ### Removed

View File

@ -1293,7 +1293,17 @@ Escapes `option` wrapping by providing default value for `None`.
Option.force(o : option('a)) : 'a 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 #### contains

View File

@ -26,6 +26,12 @@ namespace Option =
None => abort("Forced None value") None => abort("Forced None value")
Some(x) => x 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 contains(e : 'a, o : option('a)) = o == Some(e)
function on_elem(o : option('a), f : 'a => unit) : unit = match((), f, o) function on_elem(o : option('a), f : 'a => unit) : unit = match((), f, o)