{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}

module Control.Operational.Class 
    ( Operational(..)
    ) where

-- | The class of operational programs.  
class Operational instr p | p -> instr where
    -- | Make a program out of an instruction.
    singleton :: instr a -> p a