All non-ordered pairs between the elements of an array
Haskell, 29 bytes



f(a:b)=map((,)a)b++f b
f _=[]


Try it online! Example usage: f ["a","b","c"] yields [("a","b"),("a","c"),("b","c")].



With the flag -XTupleSections this can be shortened to 27 bytes, however the flag would need to be counted:

f(a:b)=map(a,)b++f b
f _=[]


Try it online!