1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-02 22:58:01 +00:00
Files
til/reason/two-ways-to-find-an-item-in-a-list.md

31 lines
996 B
Markdown

# Two Ways To Find An Item In A List
The `List` module has the typical `find` function that you'd expect any
enumerable type to include. It has a very similar `find_opt` function as
well. The difference is in the return types.
When using `List.find` you'll have to deal with the possibility of a
`Not_found` exception.
```reasonml
switch (List.find(item => item.id == id, my_list)) {
| exception Not_found => print_endline("Not found!")
| item => print_endline("Found it: " ++ item.name)
}
```
The `List.find_opt` function has a more familiar interface that doesn't
require you to know the details of what exceptions could arise. All you want
to know is if it was found or _not_. This is achieved by having an
`option('a)` return type.
```reasonml
switch (List.find_opt(item => item.id == id, my_list)) {
| None => print_endline("Not found!")
| Some(item) => print_endline("Found it: " ++ item.name)
}
```
See the [`List` module](https://reasonml.github.io/api/List.html) for more
details.