@@ -127,24 +127,13 @@ generateCode expr =
127127 jsExpr $ BuiltIn.recordUpdate jsRecord jsFields
128128
129129 Record fields ->
130− do fields' <-
131− forM fields $ \(field, e) ->
132− (,) (Var.safe field) <$> generateJsExpr e
133−
134− let fieldMap =
135− List.foldl' combine Map.empty fields'
136−
137− jsExpr $ ObjectLit () $ (prop "_", hidden fieldMap) : visible fieldMap
138− where
139− combine record (field, value) =
140− Map.insertWith (++) field [value] record
141−
142− hidden fs =
143− ObjectLit () . map (prop *** ArrayLit ()) $
144− Map.toList (Map.filter (not . null) (Map.map tail fs))
145−
146− visible fs =
147− map (first prop) (Map.toList (Map.map head fs))
130+ let
131+ toField (field, value) =
132+ do jsValue <- generateJsExpr value
133+ return (prop (Var.safe field), jsValue)
134+ in
135+ do jsFields <- mapM toField fields
136+ jsExpr $ ObjectLit () jsFields
148137
149138 Binop op leftExpr rightExpr ->
150139 binop op leftExpr rightExpr