blob: f694d81bdb331ffab170ee1b9086f7dc923e500b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
(.module:
[lux #*
[control
[monad (#+ do)]]
["." io (#+ IO)]
[data
[error (#+ Error)]]
[compiler
[default
["." reference]
["." phase
["." synthesis (#+ Synthesis)]
["." translation]
[extension
["." bundle]]]]]]
[luxc
[lang
[host
[jvm (#+ Inst State Operation Phase Bundle)]]
[translation
["." jvm
["._jvm" runtime]
["._jvm" expression]
[procedure
["._jvm" common]]]
## [js]
## (js ["._js" expression]
## ["._js" runtime])
## [lua]
## (lua ["._lua" expression]
## ["._lua" runtime])
## [ruby]
## (ruby ["._ruby" expression]
## ["._ruby" runtime])
## [python]
## (python ["._python" expression]
## ["._python" runtime])
## [r]
## (r ["._r" expression]
## ["._r" runtime])
## [scheme]
## (scheme ["._scheme" expression]
## ["._scheme" runtime])
## [common-lisp]
## (common-lisp ["._common-lisp" expression]
## ["._common-lisp" runtime])
## [php]
## (php ["._php" expression]
## ["._php" runtime])
]]])
(type: #export Runner (-> Synthesis (Error Any)))
(type: #export Definer (-> Name Synthesis (Error Any)))
(do-template [<name> <host>]
[(def: #export <name>
(IO State)
(:: io.Monad<IO> map translation.state <host>))]
[init-jvm jvm.init]
## [init-js js.init]
## [init-lua lua.init]
## [init-ruby ruby.init]
## [init-python python.init]
## [init-r r.init]
## [init-scheme scheme.init]
## [init-common-lisp common-lisp.init]
## [init-php php.init]
)
(def: (runner generate-runtime translate bundle state)
(-> (Operation Any) Phase Bundle (IO State)
Runner)
(function (_ valueS)
(|> (do phase.Monad<Operation>
[_ generate-runtime
program (translate valueS)]
(translation.evaluate! "runner" program))
translation.with-buffer
(phase.run [bundle (io.run state)]))))
(def: (definer generate-runtime translate bundle state)
(-> (Operation Any) Phase Bundle (IO State) Definer)
(function (_ lux-name valueS)
(|> (do phase.Monad<Operation>
[_ generate-runtime
valueH (translate valueS)
[host-name host-value] (translation.define! lux-name valueH)
_ (translation.learn lux-name host-name)
program (translate (synthesis.constant lux-name))]
(translation.evaluate! "definer" program))
translation.with-buffer
(phase.run [bundle (io.run state)]))))
(def: #export run-jvm (runner runtime_jvm.translate expression_jvm.translate common_jvm.bundle init-jvm))
(def: #export def-jvm (definer runtime_jvm.translate expression_jvm.translate common_jvm.bundle init-jvm))
## (def: #export run-js (runner runtime_js.translate expression_js.translate bundle.empty init-js))
## (def: #export def-js (definer runtime_js.translate expression_js.translate bundle.empty init-js))
## (def: #export run-lua (runner runtime_lua.translate expression_lua.translate bundle.empty init-lua))
## (def: #export def-lua (definer runtime_lua.translate expression_lua.translate bundle.empty init-lua))
## (def: #export run-ruby (runner runtime_ruby.translate expression_ruby.translate bundle.empty init-ruby))
## (def: #export def-ruby (definer runtime_ruby.translate expression_ruby.translate bundle.empty init-ruby))
## (def: #export run-python (runner runtime_python.translate expression_python.translate bundle.empty init-python))
## (def: #export def-python (definer runtime_python.translate expression_python.translate bundle.empty init-python))
## (def: #export run-r (runner runtime_r.translate expression_r.translate bundle.empty init-r))
## (def: #export def-r (definer runtime_r.translate expression_r.translate bundle.empty init-r))
## (def: #export run-scheme (runner runtime_scheme.translate expression_scheme.translate bundle.empty init-scheme))
## (def: #export def-scheme (definer runtime_scheme.translate expression_scheme.translate bundle.empty init-scheme))
## (def: #export run-common-lisp (runner runtime_common-lisp.translate expression_common-lisp.translate bundle.empty init-common-lisp))
## (def: #export def-common-lisp (definer runtime_common-lisp.translate expression_common-lisp.translate bundle.empty init-common-lisp))
## (def: #export run-php (runner runtime_php.translate expression_php.translate bundle.empty init-php))
## (def: #export def-php (definer runtime_php.translate expression_php.translate bundle.empty init-php))
|