aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/test/test/luxc/common.lux
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))