Skip to content

Instantly share code, notes, and snippets.

@folkertdev
Last active August 16, 2017 15:26
Show Gist options
  • Save folkertdev/bc23bf001b3102279f8dd2e0b4f21ab3 to your computer and use it in GitHub Desktop.
Save folkertdev/bc23bf001b3102279f8dd2e0b4f21ab3 to your computer and use it in GitHub Desktop.
extentWith
extentWith : (a -> a -> Order) -> List a -> Maybe ( a, a )
extentWith toOrder list =
let
max a b =
case toOrder a b of
GT ->
a
_ ->
b
folder element ( mini, maxi ) =
case toOrder element mini of
LT ->
-- if new is less than mini, it can never be larger than maxi
-- so we're immediately done
( element, maxi )
EQ ->
-- idem
( element, maxi )
GT ->
( mini, max element maxi )
in
case list of
[] ->
Nothing
x :: xs ->
Just <| List.foldl folder ( x, x ) xs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment