Skip to content

Traversing values

TODO

map_embeddeds(f, v)

TODO

Source code in preserves/fold.py
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
def map_embeddeds(f, v):
    """TODO"""
    def walk(v):
        if isinstance(v, Embedded):
            return f(v.embeddedValue)
        elif isinstance(v, (list, tuple)):
            return tuple(walk(w) for w in v)
        elif isinstance(v, (set, frozenset)):
            return frozenset(walk(w) for w in v)
        elif isinstance(v, dict):
            return ImmutableDict.from_kvs(walk(w) for w in dict_kvs(v))
        elif isinstance(v, Record):
            return Record(walk(v.key), walk(v.fields))
        else:
            return v
    return walk(v)