@@ -1116,22 +1116,34 @@ def _walk(form, _, outer_f):
11161116@_walk .register (IPersistentList )
11171117@_walk .register (ISeq )
11181118def _walk_ipersistentlist (form : Union [IPersistentList , ISeq ], inner_f , outer_f ):
1119- return outer_f (llist .list (map (inner_f , form )))
1119+ coll = llist .list (map (inner_f , form ))
1120+ if isinstance (form , IMeta ) and form .meta is not None :
1121+ coll = coll .with_meta (form .meta )
1122+ return outer_f (coll )
11201123
11211124
11221125@_walk .register (IPersistentVector )
11231126def _walk_ipersistentvector (form : IPersistentVector , inner_f , outer_f ):
1124- return outer_f (vec .vector (map (inner_f , form )))
1127+ coll = vec .vector (map (inner_f , form ))
1128+ if isinstance (form , IMeta ) and form .meta is not None :
1129+ coll = coll .with_meta (form .meta )
1130+ return outer_f (coll )
11251131
11261132
11271133@_walk .register (IPersistentMap )
11281134def _walk_ipersistentmap (form : IPersistentMap , inner_f , outer_f ):
1129- return outer_f (lmap .hash_map (* chain .from_iterable (map (inner_f , form .seq () or ()))))
1135+ coll = lmap .hash_map (* chain .from_iterable (map (inner_f , form .seq () or ())))
1136+ if isinstance (form , IMeta ) and form .meta is not None :
1137+ coll = coll .with_meta (form .meta )
1138+ return outer_f (coll )
11301139
11311140
11321141@_walk .register (IPersistentSet )
11331142def _walk_ipersistentset (form : IPersistentSet , inner_f , outer_f ):
1134- return outer_f (lset .set (map (inner_f , form )))
1143+ coll = lset .set (map (inner_f , form ))
1144+ if isinstance (form , IMeta ) and form .meta is not None :
1145+ coll = coll .with_meta (form .meta )
1146+ return outer_f (coll )
11351147
11361148
11371149def _postwalk (f , form ):
0 commit comments