futhark
Safe HaskellNone
LanguageGHC2021

Language.Futhark.Interpreter.FFI.ServerM

Synopsis

Documentation

type TypeName = Text #

The name of a server-side type.

newServer :: Server -> IO Server Source #

Use an already-running server. Shutting it down remains the responsibility of whoever started it.

stopServer :: Server -> IO (Maybe Text) Source #

Shut down the server. Returns a message on termination failure.

data ServerM a Source #

Instances

Instances details
Applicative ServerM Source # 
Instance details

Defined in Language.Futhark.Interpreter.FFI.ServerM

Methods

pure :: a -> ServerM a #

(<*>) :: ServerM (a -> b) -> ServerM a -> ServerM b #

liftA2 :: (a -> b -> c) -> ServerM a -> ServerM b -> ServerM c #

(*>) :: ServerM a -> ServerM b -> ServerM b #

(<*) :: ServerM a -> ServerM b -> ServerM a #

Functor ServerM Source # 
Instance details

Defined in Language.Futhark.Interpreter.FFI.ServerM

Methods

fmap :: (a -> b) -> ServerM a -> ServerM b #

(<$) :: a -> ServerM b -> ServerM a #

Monad ServerM Source # 
Instance details

Defined in Language.Futhark.Interpreter.FFI.ServerM

Methods

(>>=) :: ServerM a -> (a -> ServerM b) -> ServerM b #

(>>) :: ServerM a -> ServerM b -> ServerM b #

return :: a -> ServerM a #

MonadIO ServerM Source # 
Instance details

Defined in Language.Futhark.Interpreter.FFI.ServerM

Methods

liftIO :: IO a -> ServerM a #

MonadError String ServerM Source # 
Instance details

Defined in Language.Futhark.Interpreter.FFI.ServerM

Methods

throwError :: String -> ServerM a #

catchError :: ServerM a -> (String -> ServerM a) -> ServerM a #

release :: [(ValueRef, VarName)] -> ServerM [VarName] Source #

End the use of this Server. The variables of the given values are adopted by the caller under the given names, and every other variable we have created is freed, whether or not its ValueRef is still reachable. Neither the Server nor any ValueRef may be used afterwards. A variable may occur more than once, in which case it is adopted under the first of its names. Returns the name of the variable of each value.

putData :: Value -> ServerM ValueRef Source #

Put an entire value on the server at once. This is only possible for values that can be represented in the Futhark data format (primitives and arrays of primitive).

getData :: ValueRef -> ServerM (Maybe Value) Source #

Retrieve an entire value from the server at once. This is only possible for values that can be represented in the Futhark data format (primitives and arrays of primitive).

fieldOrder :: TypeName -> ServerM [(Name, TypeName)] Source #

The fields of a record type, in the order the server uses.

unzipArray :: ValueRef -> Int -> ServerM [ValueRef] Source #

Split an array of records into one array per field, in fieldOrder. The fields of an array cannot be projected one element at a time, and doing so would anyway be impossible for an empty array.

destruct :: ValueRef -> ServerM (Name, [ValueRef]) Source #

The variant of a sum, and its payload.