# Sets

Functions in EdgeDB can operate on whole sets or on
individual elements. This boils down to how the function
parameters are defined, whether they are using the `set of`

modifier (indicating that the parameter will take a set as
a whole) or not, although for built-in functions this is
usually intuitive.

Let's try out the simple element-wise function `len`

, which
works on anything that can be indexed (i.e., strings, arrays, and
bytes literals):

When a function which treats its parameters in
element-wise fashion is applied to a set, a new set is
constructed by applying the function to each original
element separately. Try different sets as inputs to `len`

:

If there are more than one element-wise function parameters,
then the function is applied to the Cartesian product of the
input sets. Try out different combinations using `str_repeat`

: