{-# LANGUAGE DeriveDataTypeable #-}
-- | The part of a HawkSpec used at Runtime. The API may change at any time.
-- 
-- Due to a `hint` limitation, this module is imported unqualified when
-- interpreting the user expression. This allows `hint` to read and write the
-- type of the expression which it interprets without falling prey to module
-- scoping issues.
module System.Console.Hawk.Runtime.Base where

import Data.Typeable

import System.Console.Hawk.Args.Spec


data HawkRuntime = HawkRuntime
    { HawkRuntime -> InputSpec
inputSpec :: InputSpec
    , HawkRuntime -> OutputSpec
outputSpec :: OutputSpec
    }
  deriving (Int -> HawkRuntime -> ShowS
[HawkRuntime] -> ShowS
HawkRuntime -> String
(Int -> HawkRuntime -> ShowS)
-> (HawkRuntime -> String)
-> ([HawkRuntime] -> ShowS)
-> Show HawkRuntime
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HawkRuntime] -> ShowS
$cshowList :: [HawkRuntime] -> ShowS
show :: HawkRuntime -> String
$cshow :: HawkRuntime -> String
showsPrec :: Int -> HawkRuntime -> ShowS
$cshowsPrec :: Int -> HawkRuntime -> ShowS
Show, HawkRuntime -> HawkRuntime -> Bool
(HawkRuntime -> HawkRuntime -> Bool)
-> (HawkRuntime -> HawkRuntime -> Bool) -> Eq HawkRuntime
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: HawkRuntime -> HawkRuntime -> Bool
$c/= :: HawkRuntime -> HawkRuntime -> Bool
== :: HawkRuntime -> HawkRuntime -> Bool
$c== :: HawkRuntime -> HawkRuntime -> Bool
Eq, Typeable)

-- reexport IO under a unique name
newtype HawkIO a = HawkIO { forall a. HawkIO a -> IO a
runHawkIO :: IO a }
  deriving Typeable