@@ -1,6 +1,6 @@
11module Generate.JavaScript.BuiltIn
22 ( character, string
3− , list
3+ , list, cons
44 , recordUpdate
55 , eq, cmp
66 , effect, outgoingPort, incomingPort
@@ -47,7 +47,21 @@ string str =
4747
4848list :: [JS.Expression ()] -> JS.Expression ()
4949list 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+ ]
5165
5266
5367