Maps a TFF sequence value
pointwise using a given function fn
.
tff.sequence_map(
fn, arg
)
Used in the notebooks
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 compuatation 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)
.
Args |
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.
|
Returns |
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.
|
Raises |
TypeError
|
If the arguments are not of the appropriate types.
|