user
Task

Given two sets *A* and *B*, compute 

(
A
∖
B
)
∪
(
B
∖
A
)
.
{\displaystyle {\displaystyle (A\setminus B)\cup (B\setminus A).}}

That is, enumerate the items that are in *A* or *B* but not both. This set is called the symmetric difference of *A* and *B*.

In other words: 

(
A
∪
B
)
∖
(
A
∩
B
)
{\displaystyle {\displaystyle (A\cup B)\setminus (A\cap B)}}
 (the set of items that are in at least one of *A* or *B* minus the set of items that are in both *A* and *B*).

Optionally, give the individual differences (

A
∖
B
{\displaystyle {\displaystyle A\setminus B}}
 and 

B
∖
A
{\displaystyle {\displaystyle B\setminus A}}
) as well.

Test cases

```
A = {John, Bob, Mary, Serena}
B = {Jim, Mary, John, Bob}

```

Notes

1. If your code uses lists of items to represent sets then ensure duplicate items in lists are correctly handled. For example two lists representing sets of `a = ["John", "Serena", "Bob", "Mary", "Serena"]` and `b = ["Jim", "Mary", "John", "Jim", "Bob"]` should produce the result of just two strings: `["Serena", "Jim"]`, in any order.
2. In the mathematical notation above `A \ B` gives the set of items in A that are not in B; `A ∪ B` gives the set of items in both A and B, (their *union*); and `A ∩ B` gives the set of items that are in both A and B (their *intersection*).
assistant
(formerly Perl 6)

```
my \A = set <John Serena Bob Mary Serena>;
my \B = set <Jim Mary John Jim Bob>;

say  A ∖ B; # Set subtraction
say  B ∖ A; # Set subtraction
say (A ∪ B) ∖ (A ∩ B);  # Symmetric difference, via basic set operations
say  A ⊖ B;             # Symmetric difference, via dedicated operator

```

Output:

```
set(Serena)
set(Jim)
set(Jim, Serena)
set(Jim, Serena)
```