diff options
author | Joris | 2015-10-04 20:48:32 +0200 |
---|---|---|
committer | Joris | 2015-10-04 20:48:32 +0200 |
commit | 8c24464a4bd0a486cd0ddf846d3b5a323a7aaa9a (patch) | |
tree | cdd1bb79846b3d8865d833a122152528b03a4746 /src/client/Utils | |
parent | 303dfd66c6434e19ba226a133a35a74a557b3e93 (diff) |
Using incomes to compute a fair computation to designate the payer
Diffstat (limited to 'src/client/Utils')
-rw-r--r-- | src/client/Utils/Dict.elm | 11 | ||||
-rw-r--r-- | src/client/Utils/List.elm | 6 | ||||
-rw-r--r-- | src/client/Utils/Maybe.elm | 20 |
3 files changed, 36 insertions, 1 deletions
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 -> [] |