You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
659 B
39 lines
659 B
let orThrow = (message, opt) => |
|
switch (opt) { |
|
| None => failwith(message) |
|
| Some(x) => x |
|
}; |
|
|
|
let map = (fn, opt) => |
|
switch (opt) { |
|
| None => None |
|
| Some(x) => Some(fn(x)) |
|
}; |
|
|
|
let bind = (fn, opt) => |
|
switch (opt) { |
|
| None => None |
|
| Some(x) => fn(x) |
|
}; |
|
|
|
let fold = (none, some, opt) => |
|
switch (opt) { |
|
| None => none() |
|
| Some(x) => some(x) |
|
}; |
|
|
|
let toResult = (error, opt) => |
|
switch (opt) { |
|
| None => Error(error) |
|
| Some(x) => Ok(x) |
|
}; |
|
|
|
let toLwt = (error, opt) => |
|
switch (opt) { |
|
| Some(x) => Lwt.return(x) |
|
| None => Lwt.fail(error) |
|
}; |
|
|
|
let some = x => Some(x); |
|
|
|
let (or) = (opt, b) => fold(() => b, x => x, opt);
|
|
|