diff options
author | Eduardo Julian | 2015-01-10 22:53:37 -0400 |
---|---|---|
committer | Eduardo Julian | 2015-01-10 22:53:37 -0400 |
commit | 409821d93f2781559677cdc2595ed15aa41eb933 (patch) | |
tree | 03f8cb589bfaf562c94c7d89707d680874123871 /test2.lux | |
parent | 8809c018b626132429a5673778db7093945037c3 (diff) |
* Changed the language so variants now store their elements directly, instead of relying on a tuple.
* Changed the pattern-matching and variant generation code accordingly.
* Also changed a bit the special form for defining classes.
Diffstat (limited to 'test2.lux')
-rw-r--r-- | test2.lux | 74 |
1 files changed, 66 insertions, 8 deletions
@@ -1,14 +1,72 @@ (import java.lang.System) -## (require "./another" as another) +## (use "./another" as another) -(definterface Function +(jvm/definterface Function (: apply (-> [java.lang.Object] java.lang.Object))) -(defclass Tuple0 []) -(defclass Tuple1 [[java.lang.Object _0]]) -(defclass Tuple2 [[java.lang.Object _0] [java.lang.Object _1]]) - -(defclass Variant [[java.lang.String tag] [java.lang.Object value]]) +(jvm/defclass Tuple0 java.lang.Object + []) +(jvm/defclass Tuple1 java.lang.Object + [[java.lang.Object _1]]) +(jvm/defclass Tuple2 java.lang.Object + [[java.lang.Object _1] [java.lang.Object _2]]) +(jvm/defclass Tuple3 java.lang.Object + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3]]) +(jvm/defclass Tuple4 java.lang.Object + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4]]) +(jvm/defclass Tuple5 java.lang.Object + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4] + [java.lang.Object _5]]) +(jvm/defclass Tuple6 java.lang.Object + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4] + [java.lang.Object _5] [java.lang.Object _6]]) +(jvm/defclass Tuple7 java.lang.Object + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4] + [java.lang.Object _5] [java.lang.Object _6] + [java.lang.Object _7]]) +(jvm/defclass Tuple8 java.lang.Object + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4] + [java.lang.Object _5] [java.lang.Object _6] + [java.lang.Object _7] [java.lang.Object _8]]) + +(jvm/defclass Variant java.lang.Object + [[java.lang.String tag]]) +(jvm/defclass Variant0 test2.Variant + []) +(jvm/defclass Variant1 test2.Variant + [[java.lang.Object _1]]) +(jvm/defclass Variant2 test2.Variant + [[java.lang.Object _1] [java.lang.Object _2]]) +(jvm/defclass Variant3 test2.Variant + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3]]) +(jvm/defclass Variant4 test2.Variant + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4]]) +(jvm/defclass Variant5 test2.Variant + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4] + [java.lang.Object _5]]) +(jvm/defclass Variant6 test2.Variant + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4] + [java.lang.Object _5] [java.lang.Object _6]]) +(jvm/defclass Variant7 test2.Variant + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4] + [java.lang.Object _5] [java.lang.Object _6] + [java.lang.Object _7]]) +(jvm/defclass Variant8 test2.Variant + [[java.lang.Object _1] [java.lang.Object _2] + [java.lang.Object _3] [java.lang.Object _4] + [java.lang.Object _5] [java.lang.Object _6] + [java.lang.Object _7] [java.lang.Object _8]]) (def (++ xs ys) (case xs @@ -120,7 +178,7 @@ ## Program (def (main args) - (case (' ((~ "Doing a slight makeover."))) + (case (' ((~ "Oh yeah..."))) (#Form (#Cons (#Text text) #Nil)) (:: (:: System out) (println text)) )) |