]> gerrit.simantics Code Review - simantics/r.git/blob - org.simantics.r.scl/scl/R/R.scl
28b2bacf6c502034e75afe0f92dfc42e7e670ecd
[simantics/r.git] / org.simantics.r.scl / scl / R / R.scl
1 import "Stream"\r
2 import "Serialization"\r
3 include "R/RExp"\r
4 \r
5 effect R \r
6     "r" \r
7     "org.rosuda.REngine.Rserve.RConnection"\r
8 \r
9 importJava "org.simantics.r.scl.RSessionConfiguration" where\r
10     data SessionConfiguration = \r
11         @FieldNames [host, port, username, password]\r
12         SessionConfiguration String Integer String String\r
13 \r
14 importJava "org.simantics.r.scl.RSession" where\r
15     data Session\r
16     syncExec :: Session -> (<R> a) -> <Proc> a\r
17     asyncExec :: Session -> (<R> a) -> <Proc> ()\r
18     @JavaName getId\r
19     sessionIdOf :: Session -> String\r
20     @JavaName close\r
21     closeSession :: Session -> <Proc> ()  \r
22     @JavaName refreshVariablesSync\r
23     refreshVariables :: Session -> <Proc> ()\r
24 \r
25 importJava "org.simantics.r.scl.RSessionManager" where\r
26     @JavaName getSession\r
27     sessionById :: String -> <Proc> Maybe Session\r
28     createSession :: SessionConfiguration -> <Proc> Session\r
29     withConfiguration :: SessionConfiguration-> (<R,e> a) -> <Proc,e> a\r
30     getOrCreateSession :: SessionConfiguration -> String -> <Proc> Session\r
31     \r
32 importJava "org.rosuda.REngine.Rserve.RConnection" where\r
33     @JavaName eval\r
34     evalRExp:: String -> <R> RExp\r
35     @JavaName voidEval\r
36     evalR_ :: String -> <R> ()\r
37     @JavaName voidEvalS\r
38     evalRS_ :: String -> <R> String\r
39     @JavaName assign\r
40     assignRExp :: String -> RExp -> <R> ()\r
41     @JavaName createFile\r
42     createFileR :: String -> <R> OutputStream\r
43     @JavaName openFile\r
44     openFileR :: String -> <R> InputStream\r
45 \r
46 evalR :: RCompatible a => String -> <R> a\r
47 evalR = fromRExp . evalRExp\r
48 \r
49 assignR :: RCompatible a => String -> a -> <R> ()\r
50 assignR name = assignRExp name . toRExp\r
51 \r
52 readFileAsStringR :: String -> <R> String\r
53 readFileAsStringR name = runProc (readAllString (openFileR name))\r
54 \r
55 test () = do\r
56     conf = SessionConfiguration "localhost" 6311 "simupedia" "simupedia"\r
57     session = createSession conf\r
58     print $ syncExec session (evalR "1+1")\r
59     closeSession session