module FRP.Spice.Graphics.Renderable where

----------
-- Code --

{-|
  A container around IO to suggest that one should perform rendering in a
  rendering function.
-}
newtype Render = Render (IO ())

{-|
  Performing the IO contained in a @'Render'@.
-}
runRender :: Render -> IO ()
runRender (Render action) = action

{-|
  A class that provides an API to convert a datatype into a @'Render'@.
-}
class Renderable a where
  toRender :: a -> Render