aiken/examples/acceptance_tests/056/lib/choice_b.ak

27 lines
388 B
Plaintext

pub fn choice(self: List<Option<a>>) -> Option<a> {
when self is {
[] ->
None
[Some(x), ..] ->
Some(x)
[None, ..others] ->
choice(others)
}
}
test choice_1() {
choice([Some(14), Some(42)]) == Some(14)
}
test choice_2() {
choice([]) == None
}
test choice_3() {
choice([None]) == None
}
test choice_4() {
choice([None, Some(42)]) == Some(42)
}