packages feed

gpu-vulkan-middle-0.1.0.54: src/Gpu/Vulkan/Misc/Middle/Internal.hsc

{-# LANGUAGE BlockArguments, LambdaCase, TupleSections #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Gpu.Vulkan.Misc.Middle.Internal (

	-- * Control

	mapContM,

	) where

#include <vulkan/vulkan.h>

mapContM :: Monad m => (a -> (b -> m c) -> m c) -> [a] -> ([b] -> m c) -> m c
-- mapContM f = runContT . mapM (ContT . f)
mapContM _ [] g = g []
mapContM f (x : xs) g = f x \y -> mapContM f xs \ys -> g $ y : ys