module Read where import Control.Monad.IO.Class (MonadIO(..)) import Data.Eq (Eq(..)) import Data.Functor ((<$>)) import Data.Text (Text) import System.IO (IO, FilePath, hPrint, stderr) import Text.Show (Show(..)) import qualified Data.ByteString as BS import qualified Data.Map.Strict as Map import qualified Data.Text.Encoding as Enc -- import qualified System.FilePath as FilePath import qualified Text.Megaparsec as P readFile :: MonadIO m => FilePath -> (FilePath -> Text -> m a) -> m a readFile fp f = do content <- Enc.decodeUtf8 <$> liftIO (BS.readFile fp) f fp content