diff options
author | Eduardo Julian | 2017-07-03 18:15:24 -0400 |
---|---|---|
committer | Eduardo Julian | 2017-07-03 18:15:24 -0400 |
commit | 65c182755954f64fd112284a5336ba05547a4283 (patch) | |
tree | 88ceff9a934883981660a53ca6002029522e0cc6 /new-luxc/source/luxc/analyser/procedure | |
parent | a7cb1e8d06e62c710c3cdfc4b225e8b4a8c26205 (diff) |
- Tested the compilation for "nat" procedures.
- Expanded the runtime.
- Some bug-fixes and refactorings.
Diffstat (limited to 'new-luxc/source/luxc/analyser/procedure')
-rw-r--r-- | new-luxc/source/luxc/analyser/procedure/common.lux | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/new-luxc/source/luxc/analyser/procedure/common.lux b/new-luxc/source/luxc/analyser/procedure/common.lux index e96874960..1976d266d 100644 --- a/new-luxc/source/luxc/analyser/procedure/common.lux +++ b/new-luxc/source/luxc/analyser/procedure/common.lux @@ -15,15 +15,15 @@ (analyser ["&;" common]))) ## [Utils] -(type: Proc-Analyser +(type: Proc (-> &;Analyser (List Code) (Lux Analysis))) -(type: Proc-Set - (D;Dict Text Proc-Analyser)) +(type: Bundle + (D;Dict Text Proc)) (def: (install name unnamed) - (-> Text (-> Text Proc-Analyser) - (-> Proc-Set Proc-Set)) + (-> Text (-> Text Proc) + (-> Bundle Bundle)) (D;put name (unnamed name))) (def: (wrong-amount-error proc expected actual) @@ -33,7 +33,7 @@ " Actual: " (|> actual nat-to-int %i))) (def: (simple-proc proc input-types output-type) - (-> Text (List Type) Type Proc-Analyser) + (-> Text (List Type) Type Proc) (let [num-expected (list;size input-types)] (function [analyse args] (let [num-actual (list;size args)] @@ -51,29 +51,29 @@ (&;fail (wrong-amount-error proc num-expected num-actual))))))) (def: (binary-operation subjectT paramT outputT proc) - (-> Type Type Type Text Proc-Analyser) + (-> Type Type Type Text Proc) (simple-proc proc (list subjectT paramT) outputT)) (def: (trinary-operation subjectT param0T param1T outputT proc) - (-> Type Type Type Type Text Proc-Analyser) + (-> Type Type Type Type Text Proc) (simple-proc proc (list subjectT param0T param1T) outputT)) (def: (unary-operation inputT outputT proc) - (-> Type Type Text Proc-Analyser) + (-> Type Type Text Proc) (simple-proc proc (list inputT) outputT)) (def: (special-value valueT proc) - (-> Type Text Proc-Analyser) + (-> Type Text Proc) (simple-proc proc (list) valueT)) (def: (converter fromT toT proc) - (-> Type Type Text Proc-Analyser) + (-> Type Type Text Proc) (simple-proc proc (list fromT) toT)) ## [Analysers] ## "lux is" represents reference/pointer equality. (def: (analyse-lux-is proc) - (-> Text Proc-Analyser) + (-> Text Proc) (function [analyse args] (&common;with-var (function [[var-id varT]] @@ -83,7 +83,7 @@ ## "lux try" provides a simple way to interact with the host platform's ## error-handling facilities. (def: (analyse-lux-try proc) - (-> Text Proc-Analyser) + (-> Text Proc) (function [analyse args] (&common;with-var (function [[var-id varT]] @@ -103,13 +103,13 @@ (&;fail (wrong-amount-error proc +1 (list;size args)))))))) (def: lux-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "lux is" analyse-lux-is) (install "lux try" analyse-lux-try))) (def: io-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "io log" (converter Text Unit)) (install "io error" (converter Text Bottom)) @@ -117,7 +117,7 @@ (install "io current-time" (special-value Int)))) (def: bit-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "bit count" (unary-operation Nat Nat)) (install "bit and" (binary-operation Nat Nat Nat)) @@ -129,7 +129,7 @@ )) (def: nat-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "nat +" (binary-operation Nat Nat Nat)) (install "nat -" (binary-operation Nat Nat Nat)) @@ -144,7 +144,7 @@ (install "nat to-text" (converter Nat Text)))) (def: int-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "int +" (binary-operation Int Int Int)) (install "int -" (binary-operation Int Int Int)) @@ -159,7 +159,7 @@ (install "int to-real" (converter Int Real)))) (def: deg-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "deg +" (binary-operation Deg Deg Deg)) (install "deg -" (binary-operation Deg Deg Deg)) @@ -175,7 +175,7 @@ (install "deg to-real" (converter Deg Real)))) (def: real-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "real +" (binary-operation Real Real Real)) (install "real -" (binary-operation Real Real Real)) @@ -196,7 +196,7 @@ (install "real from-text" (converter Text (type (Maybe Real)))))) (def: text-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "text =" (binary-operation Text Text Bool)) (install "text <" (binary-operation Text Text Bool)) @@ -210,7 +210,7 @@ )) (def: (analyse-array-get proc) - (-> Text Proc-Analyser) + (-> Text Proc) (function [analyse args] (&common;with-var (function [[var-id varT]] @@ -218,7 +218,7 @@ analyse args))))) (def: (analyse-array-put proc) - (-> Text Proc-Analyser) + (-> Text Proc) (function [analyse args] (&common;with-var (function [[var-id varT]] @@ -226,7 +226,7 @@ analyse args))))) (def: (analyse-array-remove proc) - (-> Text Proc-Analyser) + (-> Text Proc) (function [analyse args] (&common;with-var (function [[var-id varT]] @@ -234,7 +234,7 @@ analyse args))))) (def: array-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "array new" (unary-operation Nat Array)) (install "array get" analyse-array-get) @@ -244,7 +244,7 @@ )) (def: math-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "math cos" (unary-operation Real Real)) (install "math sin" (unary-operation Real Real)) @@ -267,7 +267,7 @@ )) (def: (analyse-atom-new proc) - (-> Text Proc-Analyser) + (-> Text Proc) (function [analyse args] (&common;with-var (function [[var-id varT]] @@ -287,7 +287,7 @@ (&;fail (wrong-amount-error proc +1 (list;size args)))))))) (def: (analyse-atom-read proc) - (-> Text Proc-Analyser) + (-> Text Proc) (function [analyse args] (&common;with-var (function [[var-id varT]] @@ -295,7 +295,7 @@ analyse args))))) (def: (analyse-atom-compare-and-swap proc) - (-> Text Proc-Analyser) + (-> Text Proc) (function [analyse args] (&common;with-var (function [[var-id varT]] @@ -303,7 +303,7 @@ analyse args))))) (def: atom-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "atom new" analyse-atom-new) (install "atom read" analyse-atom-read) @@ -311,7 +311,7 @@ )) (def: process-procs - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (install "process concurrency-level" (special-value Nat)) (install "process future" (unary-operation (type (io;IO Top)) Unit)) @@ -319,7 +319,7 @@ )) (def: #export procedures - Proc-Set + Bundle (|> (D;new text;Hash<Text>) (D;merge lux-procs) (D;merge bit-procs) |