From be3e93a0688d1fee7fcb6ee464642451b0e43fe0 Mon Sep 17 00:00:00 2001
From: Eduardo Julian
Date: Wed, 20 Feb 2019 00:00:57 -0400
Subject: Moved function machinery over.

---
 .../luxc/lang/translation/js/function.jvm.lux      | 77 ----------------------
 1 file changed, 77 deletions(-)
 delete mode 100644 new-luxc/source/luxc/lang/translation/js/function.jvm.lux

(limited to 'new-luxc')

diff --git a/new-luxc/source/luxc/lang/translation/js/function.jvm.lux b/new-luxc/source/luxc/lang/translation/js/function.jvm.lux
deleted file mode 100644
index ef5ea668e..000000000
--- a/new-luxc/source/luxc/lang/translation/js/function.jvm.lux
+++ /dev/null
@@ -1,77 +0,0 @@
-(.module:
-  lux
-  (lux (control [monad #+ do])
-       (data [text]
-             text/format
-             (coll [list "list/" Functor<List>]))
-       [macro])
-  (luxc ["&" lang]
-        (lang ["ls" synthesis]
-              [".L" variable #+ Variable]
-              (host [js #+ JS Expression Statement])))
-  [//]
-  (// [".T" reference]
-      [".T" loop]))
-
-(def: #export (translate-apply translate functionS argsS+)
-  (-> (-> ls.Synthesis (Meta Expression)) ls.Synthesis (List ls.Synthesis) (Meta Expression))
-  (do macro.Monad<Meta>
-    [functionJS (translate functionS)
-     argsJS+ (monad.map @ translate argsS+)]
-    (wrap (format functionJS "(" (text.join-with "," argsJS+) ")"))))
-
-(def: (input-declaration register)
-  (format "var " (referenceT.variable (inc register)) " = arguments[" (|> register .int %i) "];"))
-
-(def: (with-closure inits function)
-  (-> (List Expression) Expression Expression)
-  (let [closure (case inits
-                  #.Nil
-                  (list)
-
-                  _
-                  (|> (list.n/range +0 (dec (list.size inits)))
-                      (list/map referenceT.closure)))]
-    (format "(function(" (text.join-with "," closure) ") {"
-            "return " function
-            ";})(" (text.join-with "," inits) ")")))
-
-(def: #export (translate-function translate env arity bodyS)
-  (-> (-> ls.Synthesis (Meta Expression))
-      (List Variable) ls.Arity ls.Synthesis
-      (Meta Expression))
-  (do macro.Monad<Meta>
-    [[function-name bodyJS] (//.with-sub-context
-                              (do @
-                                [function-name //.context]
-                                (//.with-anchor [function-name +1]
-                                  (translate bodyS))))
-     closureJS+ (monad.map @ referenceT.translate-variable env)
-     #let [args-initsJS+ (|> (list.n/range +0 (dec arity))
-                             (list/map input-declaration)
-                             (text.join-with ""))
-           selfJS (format "var " (referenceT.variable +0) " = " function-name ";")
-           arityJS (|> arity .int %i)]]
-    (wrap (<| (with-closure closureJS+)
-              (format "(function " function-name "() {"
-                      "\"use strict\";"
-                      "var num_args = arguments.length;"
-                      "if(num_args == " arityJS ") {"
-                      selfJS
-                      args-initsJS+
-                      (format "while(true) {"
-                              "return " bodyJS ";"
-                              "}")
-                      "}"
-                      "else if(num_args > " arityJS ") {"
-                      "return " function-name ".apply(null, [].slice.call(arguments,0," arityJS "))"
-                      ".apply(null, [].slice.call(arguments," arityJS "));"
-                      "}"
-                      ## Less than arity
-                      "else {"
-                      "var curried = [].slice.call(arguments);"
-                      "return function() { "
-                      "return " function-name ".apply(null, curried.concat([].slice.call(arguments)));"
-                      " };"
-                      "}"
-                      "})")))))
-- 
cgit v1.2.3