import "Stream" import "Serialization" include "R/RExp" effect R "r" "org.rosuda.REngine.Rserve.RConnection" importJava "org.simantics.r.scl.RSessionConfiguration" where data SessionConfiguration = @FieldNames [host, port, username, password] SessionConfiguration String Integer String String importJava "org.simantics.r.scl.RSession" where data Session syncExec :: Session -> ( a) -> a asyncExec :: Session -> ( a) -> () @JavaName getId sessionIdOf :: Session -> String @JavaName close closeSession :: Session -> () @JavaName refreshVariablesSync refreshVariables :: Session -> () importJava "org.simantics.r.scl.RSessionManager" where @JavaName getSession sessionById :: String -> Maybe Session createSession :: SessionConfiguration -> Session withConfiguration :: SessionConfiguration-> ( a) -> a getOrCreateSession :: SessionConfiguration -> String -> Session importJava "org.rosuda.REngine.Rserve.RConnection" where @JavaName eval evalRExp:: String -> RExp @JavaName voidEval evalR_ :: String -> () @JavaName voidEvalS evalRS_ :: String -> String @JavaName assign assignRExp :: String -> RExp -> () @JavaName createFile createFileR :: String -> OutputStream @JavaName openFile openFileR :: String -> InputStream evalR :: RCompatible a => String -> a evalR = fromRExp . evalRExp assignR :: RCompatible a => String -> a -> () assignR name = assignRExp name . toRExp readFileAsStringR :: String -> String readFileAsStringR name = runProc (readAllString (openFileR name)) test () = do conf = SessionConfiguration "130.188.198.138" 6311 "simupedia" "simupedia" session = createSession conf print $ syncExec session (evalR "1+1") closeSession session