on master help sign in
Generate lists directly, do not go through Native.List.fromArray
3564de7Evan Czaplicki
src/Generate/JavaScript/BuiltIn.hs+16−2
@@ -1,6 +1,6 @@
1module Generate.JavaScript.BuiltIn
1module Generate.JavaScript.BuiltIn
2 ( character, string
2 ( character, string
3− , list
3+ , list, cons
4 , recordUpdate
4 , recordUpdate
5 , eq, cmp
5 , eq, cmp
6 , effect, outgoingPort, incomingPort
6 , effect, outgoingPort, incomingPort
@@ -47,7 +47,21 @@ string str =
47
47
48list :: [JS.Expression ()] -> JS.Expression ()
48list :: [JS.Expression ()] -> JS.Expression ()
49list elements =
49list elements =
50− nativeList "fromArray" [ JS.ArrayLit () elements ]
50+ case elements of
51+ [] ->
52+ JS.ObjectLit () [ "ctor" ==> JS.StringLit () "[]" ]
53+
54+ front : back ->
55+ cons front (list back)
56+
57+
58+cons :: JS.Expression () -> JS.Expression () -> JS.Expression ()
59+cons front back =
60+ JS.ObjectLit ()
61+ [ "ctor" ==> JS.StringLit () "::"
62+ , "_0" ==> front
63+ , "_1" ==> back
64+ ]
51
65
52
66
53
67