{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Network.AWS.Wolf.Prelude
( module Exports
, runConcurrent
, override
, interleave
) where
import Control.Concurrent.Async.Lifted
import Preamble as Exports
runConcurrent :: MonadBaseControl IO m => [m a] -> m ()
runConcurrent = void . runConcurrently . traverse Concurrently
override :: ASetter s s a b -> Maybe b -> s -> s
override k v c = maybe c (flip (set k) c) v
interleave :: [a] -> [a] -> [a]
interleave xs ys = concat $ zipWith (\x y -> [x, y]) xs ys