packages feed

ribosome-host-0.9.9.9: lib/Ribosome/Host/Interpreter/Process/Stdio.hs

module Ribosome.Host.Interpreter.Process.Stdio where

import Data.Serialize (Serialize)
import Polysemy.Process (Process, interpretProcessCurrent)

import Ribosome.Host.Data.BootError (BootError (BootError))
import Ribosome.Host.IOStack (IOStack)
import Ribosome.Host.Interpreter.Process.Cereal (interpretProcessInputCereal, interpretProcessOutputCereal)

interpretProcessCerealStdio ::
  Serialize a =>
  Members IOStack r =>
  InterpreterFor (Process a (Either Text a)) r
interpretProcessCerealStdio =
  interpretProcessOutputCereal .
  interpretProcessInputCereal .
  interpretProcessCurrent def .
  raiseUnder2 .
  resumeHoistError (BootError . show @Text) .
  raiseUnder