module Lib.Util exposing (..) import Dict -- Delete an element from a List delidx : Int -> List a -> List a delidx n l = List.take n l ++ List.drop (n+1) l -- Modify an element in a List modidx : Int -> (a -> a) -> List a -> List a modidx n f = List.indexedMap (\i e -> if i == n then f e else e) isJust : Maybe a -> Bool isJust m = case m of Just _ -> True _ -> False -- Returns true if the list contains duplicates hasDuplicates : List comparable -> Bool hasDuplicates l = let step e acc = case acc of Nothing -> Nothing Just m -> if Dict.member e m then Nothing else Just (Dict.insert e True m) in case List.foldr step (Just Dict.empty) l of Nothing -> True Just _ -> False