@@ -198,7 +198,6 @@ function Fay$$fayToJs(type,fayObj){
198198 fayObj = Fay$$_ ( fayObj . cdr ) ;
199199 }
200200 jsObj = arr ;
201-
202201 }
203202 else if ( base == "tuple" ) {
204203 // Serialize Fay tuple to JavaScript array.
@@ -240,8 +239,20 @@ function Fay$$fayToJs(type,fayObj){
240239 else if ( base == "automatic" || base == "user" ) {
241240 if ( fayObj instanceof Fay$$$ )
242241 fayObj = Fay$$_ ( fayObj ) ;
243- var fayToJsFun = Fay$$fayToJsHash [ fayObj . constructor . name ] ;
244- jsObj = fayToJsFun ? fayToJsFun ( type , type [ 2 ] , fayObj ) : fayObj ;
242+
243+ if ( fayObj instanceof Fay$$Cons ) {
244+ // Serialize Fay list to JavaScript array.
245+ var arr = [ ] ;
246+ fayObj = Fay$$_ ( fayObj ) ;
247+ while ( fayObj instanceof Fay$$Cons ) {
248+ arr . push ( Fay$$fayToJs ( [ "automatic" ] , fayObj . car ) ) ;
249+ fayObj = Fay$$_ ( fayObj . cdr ) ;
250+ }
251+ jsObj = arr ;
252+ } else {
253+ var fayToJsFun = Fay$$fayToJsHash [ fayObj . constructor . name ] ;
254+ jsObj = fayToJsFun ? fayToJsFun ( type , type [ 2 ] , fayObj ) : fayObj ;
255+ }
245256 }
246257 else
247258 throw new Error ( "Unhandled Fay->JS translation type: " + base ) ;
@@ -380,6 +391,13 @@ function Fay$$jsToFay(type,jsObj){
380391 var jsToFayFun = Fay$$jsToFayHash [ jsObj [ "instance" ] ] ;
381392 fayObj = jsToFayFun ? jsToFayFun ( type , type [ 2 ] , jsObj ) : jsObj ;
382393 }
394+ else if ( jsObj instanceof Array ) {
395+ var list = null ;
396+ for ( var i = jsObj . length - 1 ; i >= 0 ; i -- ) {
397+ list = new Fay$$Cons ( Fay$$jsToFay ( [ base ] , jsObj [ i ] ) , list ) ;
398+ }
399+ fayObj = list ;
400+ }
383401 else
384402 fayObj = jsObj ;
385403
0 commit comments