Skip to content

Commit b024f6f

Browse files
committed
feat(option): add or as replacement for orElse, deprecate orElse
1 parent 57f1874 commit b024f6f

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/Core__Option.mjs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ function getWithDefault(opt, $$default) {
8080
}
8181
}
8282

83-
function orElse(opt, other) {
83+
function or(opt, other) {
8484
if (opt !== undefined) {
8585
return opt;
8686
} else {
@@ -124,6 +124,8 @@ function cmp(a, b, f) {
124124
}
125125
}
126126

127+
var orElse = or;
128+
127129
export {
128130
flat ,
129131
filter ,
@@ -134,6 +136,7 @@ export {
134136
map ,
135137
flatMap ,
136138
getWithDefault ,
139+
or ,
137140
orElse ,
138141
isSome ,
139142
isNone ,

src/Core__Option.res

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ let getWithDefault = (opt, default) =>
8888
| None => default
8989
}
9090

91-
let orElse = (opt, other) =>
91+
let or = (opt, other) =>
9292
switch opt {
93-
| Some(_) as some => some
93+
| Some(_) => opt
9494
| None => other
9595
}
9696

@@ -99,6 +99,7 @@ let isSome = opt =>
9999
| Some(_) => true
100100
| None => false
101101
}
102+
let orElse = or
102103

103104
let isNone = value => value == None
104105

src/Core__Option.resi

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,19 @@ None->greet // "Greetings Anonymous"
190190
*/
191191
let getWithDefault: (option<'a>, 'a) => 'a
192192

193+
/**
194+
`or(opt1, opt2)` returns `opt2` if `opt1` is `None`, otherwise `opt1`.
195+
196+
## Examples
197+
198+
```rescript
199+
Option.or(Some(1812), Some(1066)) == Some(1812)
200+
Option.or(None, Some(1066) == Some(1066)
201+
Option.or(None, None) == None
202+
```
203+
*/
204+
let or: (option<'a>, option<'a>) => option<'a>
205+
193206
/**
194207
`orElse(opt1, opt2)` returns `opt2` if `opt1` is `None`, otherwise `opt1`.
195208

@@ -201,6 +214,7 @@ Option.orElse(None, Some(1066) == Some(1066)
201214
Option.orElse(None, None) == None
202215
```
203216
*/
217+
@deprecated
204218
let orElse: (option<'a>, option<'a>) => option<'a>
205219

206220
/**

0 commit comments

Comments
 (0)