@@ -24,7 +24,7 @@ function find(key, map) {
2424function fold ( fun , init , map ) {
2525 let acc = init ;
2626
27- for ( const [ key , value ] of Object . entries ( map ) ) {
27+ for ( const [ key , value ] of to_list ( map ) ) {
2828 acc = fun ( key , value , acc ) ;
2929 }
3030
@@ -48,9 +48,13 @@ function to_list(map) {
4848 return new ErlangTypes . Tuple ( BADMAP , map ) ;
4949 }
5050
51- return Object . entries ( map ) . map ( entry => {
52- return ErlangTypes . Tuple ( ...entry ) ;
53- } ) ;
51+ const list = [ ] ;
52+
53+ for ( const key of keys ( map ) ) {
54+ list . push ( new ErlangTypes . Tuple ( key , map [ key ] ) ) ;
55+ }
56+
57+ return list ;
5458}
5559
5660function from_list ( list ) {
@@ -67,15 +71,31 @@ function keys(map) {
6771 return new ErlangTypes . Tuple ( BADMAP , map ) ;
6872 }
6973
70- return Object . keys ( map ) ;
74+ const keys = [ ] ;
75+
76+ for ( const key of Object . getOwnPropertySymbols ( map ) ) {
77+ keys . push ( key ) ;
78+ }
79+
80+ for ( const key of Object . getOwnPropertyNames ( map ) ) {
81+ keys . push ( key ) ;
82+ }
83+
84+ return keys ;
7185}
7286
7387function values ( map ) {
7488 if ( erlang . is_map ( map ) === false ) {
7589 return new ErlangTypes . Tuple ( BADMAP , map ) ;
7690 }
7791
78- return Object . values ( map ) ;
92+ const theValues = [ ] ;
93+
94+ for ( const key of keys ( map ) ) {
95+ theValues . push ( map [ key ] ) ;
96+ }
97+
98+ return theValues ;
7999}
80100
81101function is_key ( key , map ) {
@@ -164,5 +184,5 @@ export default {
164184 merge,
165185 update,
166186 get,
167- take,
187+ take
168188} ;
0 commit comments