From fc09d979e4c753377131684b1100c250e89765ea Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Sun, 10 May 2020 18:08:26 +0200 Subject: ... --- src/shared/elm/Shared/Util/Array.elm | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/shared/elm/Shared/Util/Array.elm (limited to 'src/shared/elm/Shared/Util/Array.elm') diff --git a/src/shared/elm/Shared/Util/Array.elm b/src/shared/elm/Shared/Util/Array.elm new file mode 100644 index 0000000..234b4c4 --- /dev/null +++ b/src/shared/elm/Shared/Util/Array.elm @@ -0,0 +1,54 @@ +module Shared.Util.Array exposing + ( + update, + update_unsafe, + filter_first, + indexed_search + ) + +import List +import Array + +update : ( + Int -> + ((Maybe t) -> (Maybe t)) -> + (Array.Array t) -> + (Array.Array t) + ) +update index fun array = + case (fun (Array.get index array)) of + Nothing -> array + (Just e) -> (Array.set index e array) + +update_unsafe : ( + Int -> + (t -> t) -> + (Array.Array t) -> + (Array.Array t) + ) +update_unsafe index fun array = + case (Array.get index array) of + Nothing -> array + (Just e) -> (Array.set index (fun e) array) + +filter_first : (t -> Bool) -> (Array.Array t) -> (Maybe t) +filter_first fun array = + (Array.get 0 (Array.filter fun array)) + +indexed_search : (t -> Bool) -> (Array.Array t) -> (Maybe (Int, t)) +indexed_search fun array = + (List.foldl + (\v res -> + ( + case res of + (Just e) -> res + Nothing -> + let (index, value) = v in + if (fun value) + then (Just v) + else Nothing + ) + ) + Nothing + (Array.toIndexedList array) + ) -- cgit v1.2.3-70-g09d2