query
On this page

findSingle

lib.lists.findSingle

Docs pulled from | This Revision | 10 minutes ago


Find the sole element in the list matching the specified predicate.

Returns default if no such element exists, or multiple if there are multiple matching elements.

Inputs

pred

Predicate

default

Default value to return if element was not found.

multiple

Default value to return if more than one element was found

list

Input list

Type

findSingle :: (a -> bool) -> a -> a -> [a] -> a

Examples

lib.lists.findSingle usage example

findSingle (x: x == 3) "none" "multiple" [ 1 3 3 ]
=> "multiple"
findSingle (x: x == 3) "none" "multiple" [ 1 3 ]
=> 3
findSingle (x: x == 3) "none" "multiple" [ 1 9 ]
=> "none"

Noogle detected

Aliases

Implementation

The following is the current implementation of this function.

findSingle =
    pred: default: multiple: list:
    let
      found = filter pred list;
      len = length found;
    in
    if len == 0 then
      default
    else if len != 1 then
      multiple
    else
      head found;