tff.sequence_map

Maps a TFF sequence value pointwise using a given function fn.

This function supports two modes of usage:

  • When applied to a non-federated sequence, it maps individual elements of the sequence pointwise. If the supplied fn is of type T->U and the sequence arg is of type T* (a sequence of T-typed elements), the result is a sequence of type U* (a sequence of U-typed elements), with each element of the input sequence individually mapped by fn. In this mode of usage, sequence_map behaves like a computatation with type signature <T->U,T*> -> U*.

  • When applied to a federated sequence, sequence_map behaves as if it were individually applied to each member constituent. In this mode of usage, one can think of sequence_map as a specialized variant of federated_map that is designed to work with sequences and allows one to specify a fn that operates at the level of individual elements. Indeed, under the hood, when sequence_map is invoked on a federated type, it injects federated_map, thus emitting expressions like federated_map(a -> sequence_map(fn, x), arg).

fn A mapping function to apply pointwise to elements of arg.
arg A value of a TFF type that is either a sequence, or a federated sequence.

A sequence with the result of applying fn pointwise to each element of arg, or if arg was federated, a federated sequence with the result of invoking sequence_map on member sequences locally and independently at each location.

TypeError If the arguments are not of the appropriate types.