{-# LANGUAGE FlexibleInstances #-}

-- | A generalisation on functions to read and write files.
module Text.JSON.InteractFile
(
  InteractFile(..)
) where

import Data.ByteString
import qualified Data.ByteString as S

class InteractFile z where
  readFile' ::
    FilePath
    -> IO z
  writeFile' ::
    FilePath
    -> z
    -> IO ()

instance InteractFile [Char] where
  readFile' =
    Prelude.readFile
  writeFile' =
    Prelude.writeFile

instance InteractFile ByteString where
  readFile' =
    S.readFile
  writeFile' =
    S.writeFile