-- | Functions to lifting monadic 'UGen's to unsafe forms.
module Sound.SC3.UGen.Unsafe.Lift where

import Sound.SC3.UGen.UGen
import System.IO.Unsafe

-- | Lift monadic UGen to unsafe form.
liftP :: (a -> IO UGen) -> (a -> UGen)
liftP f = unsafePerformIO . f

-- | Lift monadic UGen to unsafe form.
liftP2 :: (a -> b -> IO UGen) -> (a -> b -> UGen)
liftP2 f a = unsafePerformIO . f a

-- | Lift monadic UGen to unsafe form.
liftP3 :: (a -> b -> c -> IO UGen) -> (a -> b -> c -> UGen)
liftP3 f a b = unsafePerformIO . f a b

-- | Lift monadic UGen to unsafe form.
liftP4 :: (a -> b -> c -> d -> IO UGen) -> (a -> b -> c -> d -> UGen)
liftP4 f a b c = unsafePerformIO . f a b c