control-dsl-0.2.0.0: src/Control/Dsl/Shift.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{- |
Description : Delimited continuations
-}
module Control.Dsl.Shift where
import Data.Void
import Control.Dsl.PolyCont
import Prelude hiding ((>>), (>>=), return, fail)
-- | A keyword to extract the value of a CPS function .
newtype Shift r' r a = Shift ((a -> r') -> r')
instance PolyCont (Shift r) r a where
runPolyCont (Shift k) = k