Skip to content

Commit b3195a3

Browse files
committed
feat(option): add or as replacement for orElse, deprecate orElse
1 parent 4d9d7c4 commit b3195a3

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
@@ -84,7 +84,7 @@ function getWithDefault(opt, $$default) {
8484
}
8585
}
8686

87-
function orElse(opt, other) {
87+
function or(opt, other) {
8888
if (opt !== undefined) {
8989
return opt;
9090
} else {
@@ -138,6 +138,8 @@ function zip(a, b) {
138138

139139
}
140140

141+
var orElse = or;
142+
141143
export {
142144
some ,
143145
flat ,
@@ -149,6 +151,7 @@ export {
149151
map ,
150152
flatMap ,
151153
getWithDefault ,
154+
or ,
152155
orElse ,
153156
isSome ,
154157
isNone ,

src/Core__Option.res

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

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

@@ -101,6 +101,7 @@ let isSome = opt =>
101101
| Some(_) => true
102102
| None => false
103103
}
104+
let orElse = or
104105

105106
let isNone = value => value == None
106107

src/Core__Option.resi

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

205+
/**
206+
`or(opt1, opt2)` returns `opt2` if `opt1` is `None`, otherwise `opt1`.
207+
208+
## Examples
209+
210+
```rescript
211+
Option.or(Some(1812), Some(1066)) == Some(1812)
212+
Option.or(None, Some(1066) == Some(1066)
213+
Option.or(None, None) == None
214+
```
215+
*/
216+
let or: (option<'a>, option<'a>) => option<'a>
217+
205218
/**
206219
`orElse(opt1, opt2)` returns `opt2` if `opt1` is `None`, otherwise `opt1`.
207220

@@ -213,6 +226,7 @@ Option.orElse(None, Some(1066) == Some(1066)
213226
Option.orElse(None, None) == None
214227
```
215228
*/
229+
@deprecated
216230
let orElse: (option<'a>, option<'a>) => option<'a>
217231

218232
/**

0 commit comments

Comments
 (0)