From cc16e4ba982a9a2b228c7b40d927f539c9e1a5c8 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Thu, 4 Apr 2019 18:30:46 -0400 Subject: Changed the order of the inputs to the common extensions. --- luxc/src/lux/analyser/proc/common.clj | 75 +++++++++++++++-------------------- 1 file changed, 33 insertions(+), 42 deletions(-) (limited to 'luxc') diff --git a/luxc/src/lux/analyser/proc/common.clj b/luxc/src/lux/analyser/proc/common.clj index fbdf05546..8f51521d8 100644 --- a/luxc/src/lux/analyser/proc/common.clj +++ b/luxc/src/lux/analyser/proc/common.clj @@ -9,13 +9,13 @@ (defn- analyse-lux-is [analyse exo-type ?values] (&type/with-var (fn [$var] - (|do [:let [(&/$Cons left (&/$Cons right (&/$Nil))) ?values] - =left (&&/analyse-1 analyse $var left) - =right (&&/analyse-1 analyse $var right) + (|do [:let [(&/$Cons reference (&/$Cons sample (&/$Nil))) ?values] + =reference (&&/analyse-1 analyse $var reference) + =sample (&&/analyse-1 analyse $var sample) _ (&type/check exo-type &type/Bit) _cursor &/cursor] (return (&/|list (&&/|meta exo-type _cursor - (&&/$proc (&/T ["lux" "is"]) (&/|list =left =right) (&/|list))))))))) + (&&/$proc (&/T ["lux" "is"]) (&/|list =sample =reference) (&/|list))))))))) (defn- analyse-lux-try [analyse exo-type ?values] (&type/with-var @@ -31,40 +31,44 @@ (do-template [ ] (defn- [analyse exo-type ?values] - (|do [:let [(&/$Cons x (&/$Cons y (&/$Nil))) ?values] - =x (&&/analyse-1 analyse x) - =y (&&/analyse-1 analyse y) + (|do [:let [(&/$Cons reference (&/$Cons sample (&/$Nil))) ?values] + =reference (&&/analyse-1 analyse reference) + =sample (&&/analyse-1 analyse sample) _ (&type/check exo-type ) _cursor &/cursor] (return (&/|list (&&/|meta exo-type _cursor - (&&/$proc (&/T ) (&/|list =x =y) (&/|list))))))) + (&&/$proc (&/T ) (&/|list =sample =reference) (&/|list))))))) analyse-text-eq ["text" "="] &type/Text &type/Bit analyse-text-lt ["text" "<"] &type/Text &type/Bit - analyse-text-concat ["text" "concat"] &type/Text &type/Text ) -(do-template [ ] - (defn- [analyse exo-type ?values] - (|do [:let [(&/$Cons text (&/$Cons part (&/$Cons start (&/$Nil)))) ?values] - =text (&&/analyse-1 analyse &type/Text text) - =part (&&/analyse-1 analyse &type/Text part) - =start (&&/analyse-1 analyse &type/Nat start) - _ (&type/check exo-type ) - _cursor &/cursor] - (return (&/|list (&&/|meta exo-type _cursor - (&&/$proc (&/T ["text" ]) - (&/|list =text =part =start) - (&/|list))))))) +(defn- analyse-text-concat [analyse exo-type ?values] + (|do [:let [(&/$Cons parameter (&/$Cons subject (&/$Nil))) ?values] + =parameter (&&/analyse-1 analyse &type/Text parameter) + =subject (&&/analyse-1 analyse &type/Text subject) + _ (&type/check exo-type &type/Text) + _cursor &/cursor] + (return (&/|list (&&/|meta exo-type _cursor + (&&/$proc (&/T ["text" "concat"]) (&/|list =parameter =subject) (&/|list))))))) - analyse-text-index "index" (&/$Apply &type/Nat &type/Maybe) - ) +(defn- analyse-text-index [analyse exo-type ?values] + (|do [:let [(&/$Cons start (&/$Cons part (&/$Cons text (&/$Nil)))) ?values] + =start (&&/analyse-1 analyse &type/Nat start) + =part (&&/analyse-1 analyse &type/Text part) + =text (&&/analyse-1 analyse &type/Text text) + _ (&type/check exo-type (&/$Apply &type/Nat &type/Maybe)) + _cursor &/cursor] + (return (&/|list (&&/|meta exo-type _cursor + (&&/$proc (&/T ["text" "index"]) + (&/|list =text =part =start) + (&/|list))))))) (defn- analyse-text-clip [analyse exo-type ?values] - (|do [:let [(&/$Cons text (&/$Cons from (&/$Cons to (&/$Nil)))) ?values] - =text (&&/analyse-1 analyse &type/Text text) + (|do [:let [(&/$Cons from (&/$Cons to (&/$Cons text (&/$Nil)))) ?values] =from (&&/analyse-1 analyse &type/Nat from) =to (&&/analyse-1 analyse &type/Nat to) + =text (&&/analyse-1 analyse &type/Text text) _ (&type/check exo-type &type/Text) _cursor &/cursor] (return (&/|list (&&/|meta exo-type _cursor @@ -135,31 +139,18 @@ (let [inputT outputT ] (defn- [analyse exo-type ?values] - (|do [:let [(&/$Cons subjectC (&/$Cons paramC (&/$Nil))) ?values] + (|do [:let [(&/$Cons parameterC (&/$Cons subjectC (&/$Nil))) ?values] + parameterA (&&/analyse-1 analyse parameterC) subjectA (&&/analyse-1 analyse subjectC) - paramA (&&/analyse-1 analyse paramC) _ (&type/check exo-type ) _cursor &/cursor] (return (&/|list (&&/|meta exo-type _cursor - (&&/$proc (&/T ) (&/|list subjectA paramA) (&/|list)))))))) + (&&/$proc (&/T ) (&/|list subjectA parameterA) (&/|list)))))))) analyse-i64-eq ["i64" "="] (&/$Apply &type/Any &type/I64) &type/Bit analyse-i64-add ["i64" "+"] (&/$Apply &type/Any &type/I64) &type/I64 analyse-i64-sub ["i64" "-"] (&/$Apply &type/Any &type/I64) &type/I64 - ) - -(do-template [ ] - (let [inputT - outputT ] - (defn- [analyse exo-type ?values] - (|do [:let [(&/$Cons x (&/$Cons y (&/$Nil))) ?values] - =x (&&/analyse-1 analyse x) - =y (&&/analyse-1 analyse y) - _ (&type/check exo-type ) - _cursor &/cursor] - (return (&/|list (&&/|meta exo-type _cursor - (&&/$proc (&/T ) (&/|list =x =y) (&/|list)))))))) - + analyse-int-mul ["int" "*"] &type/Int &type/Int analyse-int-div ["int" "/"] &type/Int &type/Int analyse-int-rem ["int" "%"] &type/Int &type/Int -- cgit v1.3.1 From 2914f38f7c3795a63f555409361bc1b317e871a9 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Thu, 4 Apr 2019 20:40:50 -0400 Subject: Forgot "lux text char". --- luxc/src/lux/analyser/proc/common.clj | 4 ++-- stdlib/source/lux.lux | 2 +- stdlib/source/lux/data/number/int.lux | 4 ++-- stdlib/source/lux/data/number/nat.lux | 2 +- stdlib/source/lux/data/number/rev.lux | 2 +- stdlib/source/lux/data/text.lux | 4 ++-- stdlib/source/lux/tool/compiler/default/syntax.lux | 2 +- stdlib/source/lux/tool/compiler/name.lux | 2 +- .../test/lux/compiler/default/phase/analysis/procedure/common.lux | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) (limited to 'luxc') diff --git a/luxc/src/lux/analyser/proc/common.clj b/luxc/src/lux/analyser/proc/common.clj index 8f51521d8..cbe741a34 100644 --- a/luxc/src/lux/analyser/proc/common.clj +++ b/luxc/src/lux/analyser/proc/common.clj @@ -91,9 +91,9 @@ ) (defn- analyse-text-char [analyse exo-type ?values] - (|do [:let [(&/$Cons text (&/$Cons idx (&/$Nil))) ?values] - =text (&&/analyse-1 analyse &type/Text text) + (|do [:let [(&/$Cons idx (&/$Cons text (&/$Nil))) ?values] =idx (&&/analyse-1 analyse &type/Nat idx) + =text (&&/analyse-1 analyse &type/Text text) _ (&type/check exo-type &type/Nat) _cursor &/cursor] (return (&/|list (&&/|meta exo-type _cursor diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux index 412169967..45b190c82 100644 --- a/stdlib/source/lux.lux +++ b/stdlib/source/lux.lux @@ -5999,7 +5999,7 @@ (case tokens (^multi (^ (list [_ (#Text input)])) (n/= 1 ("lux text size" input))) - (|> ("lux text char" input 0) + (|> input ("lux text char" 0) nat$ list [compiler] #Right) diff --git a/stdlib/source/lux/data/number/int.lux b/stdlib/source/lux/data/number/int.lux index 9a2ce2b9b..f94049296 100644 --- a/stdlib/source/lux/data/number/int.lux +++ b/stdlib/source/lux/data/number/int.lux @@ -73,7 +73,7 @@ (def: (int;sign?? representation) (-> Text (Maybe Int)) - (case ("lux text char" representation 0) + (case ("lux text char" 0 representation) (^ (char "-")) (#.Some -1) @@ -88,7 +88,7 @@ (loop [idx 1 output +0] (if (n/< input-size idx) - (case ( ("lux text char" repr idx)) + (case ( ("lux text char" idx repr)) #.None (#error.Failure ) diff --git a/stdlib/source/lux/data/number/nat.lux b/stdlib/source/lux/data/number/nat.lux index fb47d2460..c1f0ca420 100644 --- a/stdlib/source/lux/data/number/nat.lux +++ b/stdlib/source/lux/data/number/nat.lux @@ -191,7 +191,7 @@ (loop [idx 0 output 0] (if (n/< input-size idx) - (case ( ("lux text char" repr idx)) + (case ( ("lux text char" idx repr)) #.None (#error.Failure ("lux text concat" repr)) diff --git a/stdlib/source/lux/data/number/rev.lux b/stdlib/source/lux/data/number/rev.lux index cb95efff4..bbb34c570 100644 --- a/stdlib/source/lux/data/number/rev.lux +++ b/stdlib/source/lux/data/number/rev.lux @@ -77,7 +77,7 @@ (def: (decode repr) (let [repr-size ("lux text size" repr)] (if (n/> 1 repr-size) - (case ("lux text char" repr 0) + (case ("lux text char" 0 repr) (^ (char ".")) (case (:: decode (de-prefix repr)) (#error.Success output) diff --git a/stdlib/source/lux/data/text.lux b/stdlib/source/lux/data/text.lux index cf13fd182..384d4e860 100644 --- a/stdlib/source/lux/data/text.lux +++ b/stdlib/source/lux/data/text.lux @@ -46,7 +46,7 @@ (def: #export (nth idx input) (-> Nat Text (Maybe Char)) (if (n/< ("lux text size" input) idx) - (#.Some ("lux text char" input idx)) + (#.Some ("lux text char" idx input)) #.None)) (def: #export (index-of' pattern from input) @@ -215,7 +215,7 @@ (|> hash (i64.left-shift 5) (n/- hash) - (n/+ ("lux text char" input idx)))) + (n/+ ("lux text char" idx input)))) hash))))))) (def: #export concat diff --git a/stdlib/source/lux/tool/compiler/default/syntax.lux b/stdlib/source/lux/tool/compiler/default/syntax.lux index 8be32d7f2..512c19246 100644 --- a/stdlib/source/lux/tool/compiler/default/syntax.lux +++ b/stdlib/source/lux/tool/compiler/default/syntax.lux @@ -155,7 +155,7 @@ (template: (!with-char+ @source-code-size @source-code @offset @char @else @body) (if (!i/< (:coerce Int @source-code-size) (:coerce Int @offset)) - (let [@char ("lux text char" @source-code @offset)] + (let [@char ("lux text char" @offset @source-code)] @body) @else)) diff --git a/stdlib/source/lux/tool/compiler/name.lux b/stdlib/source/lux/tool/compiler/name.lux index f65113d38..d2841d849 100644 --- a/stdlib/source/lux/tool/compiler/name.lux +++ b/stdlib/source/lux/tool/compiler/name.lux @@ -40,7 +40,7 @@ output ""] (if (n/< name/size idx) (recur (inc idx) - (|> ("lux text char" name idx) !sanitize (format output))) + (|> name ("lux text char" idx) !sanitize (format output))) output)))) (def: #export (definition [module short]) diff --git a/stdlib/source/test/lux/compiler/default/phase/analysis/procedure/common.lux b/stdlib/source/test/lux/compiler/default/phase/analysis/procedure/common.lux index a4c4421d2..bf7de5cec 100644 --- a/stdlib/source/test/lux/compiler/default/phase/analysis/procedure/common.lux +++ b/stdlib/source/test/lux/compiler/default/phase/analysis/procedure/common.lux @@ -165,7 +165,7 @@ (test "Can query the size/length of a text." (check-success+ "lux text size" (list subjectC) Nat)) (test "Can obtain the character code of a text at a given index." - (check-success+ "lux text char" (list subjectC fromC) Nat)) + (check-success+ "lux text char" (list fromC subjectC) Nat)) (test "Can clip a piece of text between 2 indices." (check-success+ "lux text clip" (list fromC toC subjectC) Text)) )))) -- cgit v1.3.1