From 8c24464a4bd0a486cd0ddf846d3b5a323a7aaa9a Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 4 Oct 2015 20:48:32 +0200 Subject: Using incomes to compute a fair computation to designate the payer --- src/client/Utils/Dict.elm | 11 +++++++++++ src/client/Utils/List.elm | 6 ++++++ src/client/Utils/Maybe.elm | 20 +++++++++++++++++++- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/client/Utils/Dict.elm create mode 100644 src/client/Utils/List.elm (limited to 'src/client/Utils') diff --git a/src/client/Utils/Dict.elm b/src/client/Utils/Dict.elm new file mode 100644 index 0000000..dc01b17 --- /dev/null +++ b/src/client/Utils/Dict.elm @@ -0,0 +1,11 @@ +module Utils.Dict + ( mapValues + ) where + +import Dict as Dict exposing (..) + +mapValues : (a -> b) -> Dict comparable a -> Dict comparable b +mapValues f = Dict.fromList << List.map (onSecond f) << Dict.toList + +onSecond : (a -> b) -> (comparable, a) -> (comparable, b) +onSecond f tuple = case tuple of (x, y) -> (x, f y) diff --git a/src/client/Utils/List.elm b/src/client/Utils/List.elm new file mode 100644 index 0000000..f33e124 --- /dev/null +++ b/src/client/Utils/List.elm @@ -0,0 +1,6 @@ +module Utils.List + ( find + ) where + +find : (a -> Bool) -> List a -> Maybe a +find predicate = List.head << List.filter predicate diff --git a/src/client/Utils/Maybe.elm b/src/client/Utils/Maybe.elm index 507d9a4..d954ae0 100644 --- a/src/client/Utils/Maybe.elm +++ b/src/client/Utils/Maybe.elm @@ -1,9 +1,27 @@ module Utils.Maybe ( isJust + , catMaybes + , maybeToList ) where isJust : Maybe a -> Bool isJust maybe = case maybe of - Just _ -> True + Just _ -> True Nothing -> False + +catMaybes : List (Maybe a) -> List a +catMaybes = + List.foldr + (\mb xs -> + case mb of + Just x -> x :: xs + Nothing -> xs + ) + [] + +maybeToList : Maybe a -> List a +maybeToList mb = + case mb of + Just a -> [a] + Nothing -> [] -- cgit v1.2.3