From 604e1d0c108f6153b599684b4b7828eae709118a Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sun, 14 Dec 2014 23:20:24 -0400 Subject: Now defining functions as classes inheriting Function. --- src/lang.clj | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/lang.clj') diff --git a/src/lang.clj b/src/lang.clj index 7e71a1a62..f68d6eeb3 100644 --- a/src/lang.clj +++ b/src/lang.clj @@ -96,7 +96,6 @@ (STATIC-METHOD w x y z))))))))) - ;; TODO: Define functions as classes inheriting Function. ;; TODO: Add tuples. ;; TODO: Add pattern-matching. ;; TODO: Add thunks. @@ -109,10 +108,29 @@ ;; TODO: Re-implement compiler in language. ;; TODO: Add all the missing literal types. ;; TODO: Allow strings to have escape characters. + ;; TODO: Add lambdas. + ;; TODO: Add "do" expressions. + ;; TODO: Fold all closure classes into one. + ;; TODO: When doing partial application, skip "apply" and just call constructor appropiatedly. + ;; TODO: Add extra arities (apply2, apply3, ..., apply16) ;; TODO: + ;; TODO: + + (let [source-code (slurp "test2.lang") + tokens (&lexer/lex source-code) + ;; _ (prn 'tokens tokens) + syntax (&parser/parse tokens) + ;; _ (prn 'syntax syntax) + ann-syntax (&analyser/analyse "test2" syntax) + ;; _ (prn 'ann-syntax ann-syntax) + class-data (&compiler/compile "test2" ann-syntax)] + (write-file "test2.class" class-data)) ;; jar cvf test2.jar test2 test2.class ;; java -cp "test2.jar" test2 ;; jar cvf test2.jar test2 test2.class && java -cp "test2.jar" test2 ;; jar cvf test2.jar test2 test2.class another.class && java -cp "test2.jar" test2 + + ;; jar cvf test2.jar *.class test2 && java -cp "test2.jar" test2 + ) -- cgit v1.2.3