{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE RankNTypes #-} module Coolbal.Target ( AnyTarget(..), useAnyTarget, ) where import GHC.Generics (Generic) import Coolbal.EnvBinary import Coolbal.Target.Class import Coolbal.Target.Executable data AnyTarget = AnyTargetExe ExeTarget deriving (Show, Generic) instance EnvBinary RestoreEnv AnyTarget useAnyTarget :: (forall a. (Show a, IsTarget a) => a -> r) -> AnyTarget -> r useAnyTarget f (AnyTargetExe x) = f x