aboutsummaryrefslogtreecommitdiff
path: root/luxc
diff options
context:
space:
mode:
Diffstat (limited to 'luxc')
-rw-r--r--luxc/src/lux/analyser.clj4
-rw-r--r--luxc/src/lux/analyser/base.clj16
-rw-r--r--luxc/src/lux/analyser/function.clj (renamed from luxc/src/lux/analyser/lambda.clj)4
-rw-r--r--luxc/src/lux/analyser/lux.clj36
-rw-r--r--luxc/src/lux/analyser/proc/jvm.clj1
-rw-r--r--luxc/src/lux/compiler/jvm.clj4
-rw-r--r--luxc/src/lux/compiler/jvm/function.clj (renamed from luxc/src/lux/compiler/jvm/lambda.clj)48
-rw-r--r--luxc/src/lux/compiler/jvm/lux.clj4
-rw-r--r--luxc/src/lux/optimizer.clj4
9 files changed, 60 insertions, 61 deletions
diff --git a/luxc/src/lux/analyser.clj b/luxc/src/lux/analyser.clj
index 4090cfea8..c47eaddfa 100644
--- a/luxc/src/lux/analyser.clj
+++ b/luxc/src/lux/analyser.clj
@@ -119,13 +119,13 @@
(&/with-analysis-meta cursor exo-type
(&&lux/analyse-case analyse exo-type ?value ?branches)))
- "_lux_lambda"
+ "_lux_function"
(|let [(&/$Cons [_ (&/$SymbolS "" ?self)]
(&/$Cons [_ (&/$SymbolS "" ?arg)]
(&/$Cons ?body
(&/$Nil)))) parameters]
(&/with-analysis-meta cursor exo-type
- (&&lux/analyse-lambda analyse exo-type ?self ?arg ?body)))
+ (&&lux/analyse-function analyse exo-type ?self ?arg ?body)))
"_lux_proc"
(|let [(&/$Cons [_ (&/$TupleS (&/$Cons [_ (&/$TextS ?category)]
diff --git a/luxc/src/lux/analyser/base.clj b/luxc/src/lux/analyser/base.clj
index f4718a67e..46eafa051 100644
--- a/luxc/src/lux/analyser/base.clj
+++ b/luxc/src/lux/analyser/base.clj
@@ -17,7 +17,7 @@
("tuple" 1)
("apply" 2)
("case" 2)
- ("lambda" 4)
+ ("function" 4)
("ann" 2)
("var" 1)
("captured" 1)
@@ -104,13 +104,13 @@
(&/T [_pattern (de-meta _body)])))
branches))
- ($lambda _register-offset scope captured body)
- ($lambda _register-offset scope
- (&/|map (fn [branch]
- (|let [[_name _captured] branch]
- (&/T [_name (de-meta _captured)])))
- captured)
- (de-meta body))
+ ($function _register-offset scope captured body)
+ ($function _register-offset scope
+ (&/|map (fn [branch]
+ (|let [[_name _captured] branch]
+ (&/T [_name (de-meta _captured)])))
+ captured)
+ (de-meta body))
($ann value-expr type-expr)
(de-meta value-expr)
diff --git a/luxc/src/lux/analyser/lambda.clj b/luxc/src/lux/analyser/function.clj
index fdea7521a..aaaaed9f9 100644
--- a/luxc/src/lux/analyser/lambda.clj
+++ b/luxc/src/lux/analyser/function.clj
@@ -1,4 +1,4 @@
-(ns lux.analyser.lambda
+(ns lux.analyser.function
(:require clojure.core.match
clojure.core.match.array
(lux [base :as & :refer [|let |do return |case]]
@@ -7,7 +7,7 @@
[env :as &env])))
;; [Resource]
-(defn with-lambda [self self-type arg arg-type body]
+(defn with-function [self self-type arg arg-type body]
(&/with-closure
(|do [scope-name &/get-scope-name]
(&env/with-local self self-type
diff --git a/luxc/src/lux/analyser/lux.clj b/luxc/src/lux/analyser/lux.clj
index 989ccb591..04ef66683 100644
--- a/luxc/src/lux/analyser/lux.clj
+++ b/luxc/src/lux/analyser/lux.clj
@@ -8,7 +8,7 @@
[type :as &type]
[host :as &host])
(lux.analyser [base :as &&]
- [lambda :as &&lambda]
+ [function :as &&function]
[case :as &&case]
[env :as &&env]
[module :as &&module]
@@ -302,7 +302,7 @@
(|let [scopes (&/|map #(&/get$ &/$name %) (&/|reverse inner))
[=local inner*] (&/fold2 (fn [register+new-inner frame in-scope]
(|let [[register new-inner] register+new-inner
- [register* frame*] (&&lambda/close-over in-scope name register frame)]
+ [register* frame*] (&&function/close-over in-scope name register frame)]
(&/T [register* (&/$Cons frame* new-inner)])))
(&/T [(or (->> bottom-outer (&/get$ &/$locals) (&/get$ &/$mappings) (&/|get name))
(->> bottom-outer (&/get$ &/$closure) (&/get$ &/$mappings) (&/|get name)))
@@ -464,25 +464,25 @@
=func** (&type/clean $output =func*)]
(return =func**))))
-(defn analyse-lambda* [analyse exo-type ?self ?arg ?body]
+(defn analyse-function* [analyse exo-type ?self ?arg ?body]
(|case exo-type
(&/$VarT id)
(|do [? (&type/bound? id)]
(if ?
(|do [exo-type* (&type/deref id)]
- (analyse-lambda* analyse exo-type* ?self ?arg ?body))
+ (analyse-function* analyse exo-type* ?self ?arg ?body))
;; Inference
(&type/with-var
(fn [$input]
(&type/with-var
(fn [$output]
- (|do [[[lambda-type lambda-cursor] lambda-analysis] (analyse-lambda* analyse (&/$LambdaT $input $output) ?self ?arg ?body)
+ (|do [[[function-type function-cursor] function-analysis] (analyse-function* analyse (&/$LambdaT $input $output) ?self ?arg ?body)
=input (&type/resolve-type $input)
=output (&type/resolve-type $output)
inferred-type (clean-func-inference $input $output =input (embed-inferred-input =input =output))
_ (&type/check exo-type inferred-type)]
- (return (&&/|meta inferred-type lambda-cursor
- lambda-analysis)))
+ (return (&&/|meta inferred-type function-cursor
+ function-analysis)))
))))))
_
@@ -494,23 +494,23 @@
:let [(&/$ExT $var-id) $var]
exo-type** (&type/apply-type exo-type* $var)]
(&/with-scope-type-var $var-id
- (analyse-lambda* analyse exo-type** ?self ?arg ?body)))
+ (analyse-function* analyse exo-type** ?self ?arg ?body)))
(&/$ExQ _)
(&type/with-var
(fn [$var]
(|do [exo-type** (&type/apply-type exo-type* $var)
- =expr (analyse-lambda* analyse exo-type** ?self ?arg ?body)]
+ =expr (analyse-function* analyse exo-type** ?self ?arg ?body)]
(&&/clean-analysis $var =expr))))
(&/$LambdaT ?arg-t ?return-t)
- (|do [[=scope =captured =body] (&&lambda/with-lambda ?self exo-type*
+ (|do [[=scope =captured =body] (&&function/with-function ?self exo-type*
?arg ?arg-t
(&&/analyse-1 analyse ?return-t ?body))
_cursor &/cursor
register-offset &&env/next-local-idx]
(return (&&/|meta exo-type* _cursor
- (&&/$lambda register-offset =scope =captured =body))))
+ (&&/$function register-offset =scope =captured =body))))
_
(&/fail "")))
@@ -518,14 +518,14 @@
(&/fail-with-loc (str err "\n" "[Analyser Error] Functions require function types: " (&type/show-type exo-type)))))
))
-(defn analyse-lambda** [analyse exo-type ?self ?arg ?body]
+(defn analyse-function** [analyse exo-type ?self ?arg ?body]
(|case exo-type
(&/$UnivQ _)
(|do [$var &type/existential
:let [(&/$ExT $var-id) $var]
exo-type* (&type/apply-type exo-type $var)
[_ _expr] (&/with-scope-type-var $var-id
- (analyse-lambda** analyse exo-type* ?self ?arg ?body))
+ (analyse-function** analyse exo-type* ?self ?arg ?body))
_cursor &/cursor]
(return (&&/|meta exo-type _cursor _expr)))
@@ -533,17 +533,17 @@
(|do [? (&type/bound? id)]
(if ?
(|do [exo-type* (&type/actual-type exo-type)]
- (analyse-lambda* analyse exo-type* ?self ?arg ?body))
+ (analyse-function* analyse exo-type* ?self ?arg ?body))
;; Inference
- (analyse-lambda* analyse exo-type ?self ?arg ?body)))
+ (analyse-function* analyse exo-type ?self ?arg ?body)))
_
(|do [exo-type* (&type/actual-type exo-type)]
- (analyse-lambda* analyse exo-type* ?self ?arg ?body))
+ (analyse-function* analyse exo-type* ?self ?arg ?body))
))
-(defn analyse-lambda [analyse exo-type ?self ?arg ?body]
- (|do [output (analyse-lambda** analyse exo-type ?self ?arg ?body)]
+(defn analyse-function [analyse exo-type ?self ?arg ?body]
+ (|do [output (analyse-function** analyse exo-type ?self ?arg ?body)]
(return (&/|list output))))
(defn analyse-def [analyse optimize eval! compile-def ?name ?value ?meta]
diff --git a/luxc/src/lux/analyser/proc/jvm.clj b/luxc/src/lux/analyser/proc/jvm.clj
index ec14aabb0..3fc3e2e8c 100644
--- a/luxc/src/lux/analyser/proc/jvm.clj
+++ b/luxc/src/lux/analyser/proc/jvm.clj
@@ -12,7 +12,6 @@
[lux.type.host :as &host-type]
[lux.host.generics :as &host-generics]
(lux.analyser [base :as &&]
- [lambda :as &&lambda]
[env :as &&env]
[parser :as &&a-parser])
[lux.compiler.jvm.base :as &c!base])
diff --git a/luxc/src/lux/compiler/jvm.clj b/luxc/src/lux/compiler/jvm.clj
index 150ec54f4..b612c9f35 100644
--- a/luxc/src/lux/compiler/jvm.clj
+++ b/luxc/src/lux/compiler/jvm.clj
@@ -24,7 +24,7 @@
(lux.compiler.jvm [base :as &&]
[lux :as &&lux]
[case :as &&case]
- [lambda :as &&lambda]
+ [function :as &&function]
[rt :as &&rt]
[cache :as &&jvm-cache])
(lux.compiler.jvm.proc [common :as &&proc-common]
@@ -105,7 +105,7 @@
(&&lux/compile-if (partial compile-expression $begin) _test _then _else)
(&o/$function _register-offset ?arity ?scope ?env ?body)
- (&&lambda/compile-function compile-expression &/$None ?arity ?scope ?env ?body)
+ (&&function/compile-function compile-expression &/$None ?arity ?scope ?env ?body)
(&o/$ann ?value-ex ?type-ex)
(compile-expression $begin ?value-ex)
diff --git a/luxc/src/lux/compiler/jvm/lambda.clj b/luxc/src/lux/compiler/jvm/function.clj
index 87d977012..83c1fb95c 100644
--- a/luxc/src/lux/compiler/jvm/lambda.clj
+++ b/luxc/src/lux/compiler/jvm/function.clj
@@ -1,4 +1,4 @@
-(ns lux.compiler.jvm.lambda
+(ns lux.compiler.jvm.function
(:require (clojure [string :as string]
[set :as set]
[template :refer [do-template]])
@@ -21,7 +21,7 @@
;; [Utils]
(def ^:private field-sig (&host-generics/->type-signature "java.lang.Object"))
-(def ^:private lambda-return-sig (&host-generics/->type-signature "java.lang.Object"))
+(def ^:private function-return-sig (&host-generics/->type-signature "java.lang.Object"))
(def ^:private <init>-return "V")
(defn ^:private ^String reset-signature [function-class]
@@ -67,10 +67,10 @@
(-> (consecutive-applys (+ start &&/num-apply-variants) (- amount &&/num-apply-variants))
(->> (when (> amount &&/num-apply-variants)))))))
-(defn ^:private lambda-impl-signature [arity]
- (str "(" (&/fold str "" (&/|repeat arity field-sig)) ")" lambda-return-sig))
+(defn ^:private function-impl-signature [arity]
+ (str "(" (&/fold str "" (&/|repeat arity field-sig)) ")" function-return-sig))
-(defn ^:private lambda-<init>-signature [env arity]
+(defn ^:private function-<init>-signature [env arity]
(if (> arity 1)
(str "(" (&/fold str "" (&/|repeat (&/|length env) field-sig)) "I" (&/fold str "" (&/|repeat (dec arity) field-sig)) ")"
<init>-return)
@@ -86,9 +86,9 @@
(.visitVarInsn Opcodes/ILOAD (inc closure-length))
(.visitMethodInsn Opcodes/INVOKESPECIAL &&/function-class "<init>" "(I)V"))))
-(defn ^:private add-lambda-<init> [^ClassWriter class class-name arity env]
+(defn ^:private add-function-<init> [^ClassWriter class class-name arity env]
(let [closure-length (&/|length env)]
- (doto (.visitMethod class Opcodes/ACC_PUBLIC "<init>" (lambda-<init>-signature env arity) nil nil)
+ (doto (.visitMethod class Opcodes/ACC_PUBLIC "<init>" (function-<init>-signature env arity) nil nil)
(.visitCode)
;; Do normal object initialization
(.visitVarInsn Opcodes/ALOAD 0)
@@ -107,9 +107,9 @@
(.visitEnd))))
(let [impl-flags (+ Opcodes/ACC_PUBLIC Opcodes/ACC_FINAL)]
- (defn ^:private add-lambda-impl [^ClassWriter class class-name compile arity impl-body]
+ (defn ^:private add-function-impl [^ClassWriter class class-name compile arity impl-body]
(let [$begin (new Label)]
- (&/with-writer (doto (.visitMethod class impl-flags "impl" (lambda-impl-signature arity) nil nil)
+ (&/with-writer (doto (.visitMethod class impl-flags "impl" (function-impl-signature arity) nil nil)
(.visitCode)
(.visitLabel $begin))
(|do [^MethodVisitor *writer* &/get-writer
@@ -120,10 +120,10 @@
(.visitEnd))]]
(return ret))))))
-(defn ^:private instance-closure [compile lambda-class arity closed-over]
+(defn ^:private instance-closure [compile function-class arity closed-over]
(|do [^MethodVisitor *writer* &/get-writer
:let [_ (doto *writer*
- (.visitTypeInsn Opcodes/NEW lambda-class)
+ (.visitTypeInsn Opcodes/NEW function-class)
(.visitInsn Opcodes/DUP))]
_ (&/map% (fn [?name+?captured]
(|case ?name+?captured
@@ -134,10 +134,10 @@
(doto *writer*
(.visitLdcInsn (int 0))
(fill-nulls! (dec arity))))]
- :let [_ (.visitMethodInsn *writer* Opcodes/INVOKESPECIAL lambda-class "<init>" (lambda-<init>-signature closed-over arity))]]
+ :let [_ (.visitMethodInsn *writer* Opcodes/INVOKESPECIAL function-class "<init>" (function-<init>-signature closed-over arity))]]
(return nil)))
-(defn ^:private add-lambda-reset [^ClassWriter class-writer class-name arity env]
+(defn ^:private add-function-reset [^ClassWriter class-writer class-name arity env]
(if (> arity 1)
(doto (.visitMethod class-writer Opcodes/ACC_PUBLIC "reset" (reset-signature class-name) nil nil)
(.visitCode)
@@ -147,7 +147,7 @@
(->> (dotimes [cidx (&/|length env)])))
(.visitLdcInsn (int 0))
(fill-nulls! (dec arity))
- (.visitMethodInsn Opcodes/INVOKESPECIAL class-name "<init>" (lambda-<init>-signature env arity))
+ (.visitMethodInsn Opcodes/INVOKESPECIAL class-name "<init>" (function-<init>-signature env arity))
(.visitInsn Opcodes/ARETURN)
(.visitMaxs 0 0)
(.visitEnd))
@@ -158,7 +158,7 @@
(.visitMaxs 0 0)
(.visitEnd))))
-(defn ^:private add-lambda-apply-n [^ClassWriter class-writer +degree+ class-name arity env compile impl-body]
+(defn ^:private add-function-apply-n [^ClassWriter class-writer +degree+ class-name arity env compile impl-body]
(if (> arity 1)
(let [num-partials (dec arity)
$default (new Label)
@@ -185,7 +185,7 @@
(->> (dotimes [idx stage])))
(consecutive-args 1 +degree+)
(fill-nulls! (- (- num-partials +degree+) stage))
- (.visitMethodInsn Opcodes/INVOKESPECIAL class-name "<init>" (lambda-<init>-signature env arity))
+ (.visitMethodInsn Opcodes/INVOKESPECIAL class-name "<init>" (function-<init>-signature env arity))
(.visitJumpInsn Opcodes/GOTO $end))
(->> (cond (= stage arity-over-extent)
(doto method-writer
@@ -196,7 +196,7 @@
(-> (get-field! class-name (str &&/partial-prefix idx))
(->> (dotimes [idx stage])))
(consecutive-args 1 +degree+)
- (.visitMethodInsn Opcodes/INVOKEVIRTUAL class-name "impl" (lambda-impl-signature arity))
+ (.visitMethodInsn Opcodes/INVOKEVIRTUAL class-name "impl" (function-impl-signature arity))
(.visitJumpInsn Opcodes/GOTO $end))
(> stage arity-over-extent)
@@ -209,7 +209,7 @@
(-> (get-field! class-name (str &&/partial-prefix idx))
(->> (dotimes [idx stage])))
(consecutive-args 1 args-to-completion)
- (.visitMethodInsn Opcodes/INVOKEVIRTUAL class-name "impl" (lambda-impl-signature arity))
+ (.visitMethodInsn Opcodes/INVOKEVIRTUAL class-name "impl" (function-impl-signature arity))
(consecutive-applys (+ 1 args-to-completion) args-left)
(.visitJumpInsn Opcodes/GOTO $end)))
@@ -234,7 +234,7 @@
))
;; [Exports]
-(let [lambda-flags (+ Opcodes/ACC_PUBLIC Opcodes/ACC_FINAL Opcodes/ACC_SUPER)
+(let [function-flags (+ Opcodes/ACC_PUBLIC Opcodes/ACC_FINAL Opcodes/ACC_SUPER)
datum-flags (+ Opcodes/ACC_PRIVATE Opcodes/ACC_FINAL)]
(defn compile-function [compile ?prev-writer arity ?scope ?env ?body]
(|do [[file-name _ _] &/cursor
@@ -247,7 +247,7 @@
(&/$None)
(&/T [(doto (new ClassWriter ClassWriter/COMPUTE_MAXS)
- (.visit &host/bytecode-version lambda-flags
+ (.visit &host/bytecode-version function-flags
class-name nil &&/function-class (into-array String [])))
true]))
_ (doto =class
@@ -264,13 +264,13 @@
(->> (dotimes [idx (dec arity)])))
(-> (.visitSource file-name nil)
(when save?))
- (add-lambda-<init> class-name arity ?env)
- (add-lambda-reset class-name arity ?env)
+ (add-function-<init> class-name arity ?env)
+ (add-function-reset class-name arity ?env)
)]
_ (if (> arity 1)
- (add-lambda-impl =class class-name compile arity ?body)
+ (add-function-impl =class class-name compile arity ?body)
(return nil))
- _ (&/map% #(add-lambda-apply-n =class % class-name arity ?env compile ?body)
+ _ (&/map% #(add-function-apply-n =class % class-name arity ?env compile ?body)
(&/|range* 1 (min arity &&/num-apply-variants)))
:let [_ (.visitEnd =class)]
_ (if save?
diff --git a/luxc/src/lux/compiler/jvm/lux.clj b/luxc/src/lux/compiler/jvm/lux.clj
index e14615946..882c9b74c 100644
--- a/luxc/src/lux/compiler/jvm/lux.clj
+++ b/luxc/src/lux/compiler/jvm/lux.clj
@@ -16,7 +16,7 @@
[module :as &a-module]
[meta :as &a-meta])
(lux.compiler.jvm [base :as &&]
- [lambda :as &&lambda]))
+ [function :as &&function]))
(:import (org.objectweb.asm Opcodes
Label
ClassWriter
@@ -286,7 +286,7 @@
(-> (.visitField field-flags &/value-field datum-sig nil nil)
(doto (.visitEnd)))
(.visitSource file-name nil))]
- instancer (&&lambda/compile-function compile (&/$Some =class) _arity _scope _captured ?body+)
+ instancer (&&function/compile-function compile (&/$Some =class) _arity _scope _captured ?body+)
_ (&/with-writer (.visitMethod =class Opcodes/ACC_STATIC "<clinit>" "()V" nil nil)
(|do [^MethodVisitor **writer** &/get-writer
:let [_ (.visitCode **writer**)]
diff --git a/luxc/src/lux/optimizer.clj b/luxc/src/lux/optimizer.clj
index 9fc50646e..36caf3362 100644
--- a/luxc/src/lux/optimizer.clj
+++ b/luxc/src/lux/optimizer.clj
@@ -1142,9 +1142,9 @@
_
(normal-case-optim)))
- (&a/$lambda _register-offset scope captured body)
+ (&a/$function _register-offset scope captured body)
(|let [inner-func? (|case body
- [_ (&a/$lambda _ _ _ _)]
+ [_ (&a/$function _ _ _ _)]
true
_