module Language.Primitives.IoAble where

class IoAble a where
  classifyInput :: a -> Maybe InputClassification
  classifyOutput :: a -> Maybe OutputClassification
  pluckInner :: a -> IoSelector -> a
  fromString :: String -> a

data OutputClassification =
  IoPrint
  | IoWriteFile

data InputClassification =
  IoReadFile

data IoSelector =
  IoFilename
  | IoContents
  | IoReadFileSel