right :: Tape a  -- ^ The tape
      -> Either (ExecutionError a) (Tape a)
      {- ^ A new tape with its pointer pointing to the
       - element to the right of the pointer in the
       - original tape; or an execution error if the
       - tape to the right is exhausted -}
right t@(Tape _ _ []) =
  Left $ ExecutionError "Error trying to go right on an empty tape" t
right :: Tape a  -- ^ The tape
      -> Either (ExecutionError a) (Tape a)
right t@(Tape _ _ []) =
  Left $ ExecutionError "Error trying to go right on an empty tape" t
right t@(Tape _ _ []) =
  Left $ ExecutionError "Error trying to go right on an empty tape" t