classificar listas usando sortBy

Estou tentando classificar minha lista de tuplas com base no quarto elemento em cada uma das tuplas. O quarto elemento contém uma sequência que é o nome de uma pessoa. Quero colocar tuplas que contenham o mesmo nome um ao lado do outro. Um exemplo das listas de tuplas antes de serem classificadas é:

[("A",100,"Q",3,"Todd",2.0),
 ("B",203,"R",3,"Rachel",1.66),
 ("B",273,"F",1,"Mike",2.66),
 ("A",200,"P",1,"Rachel",0.0),
 ("A",549,"D",3,"Todd",2.0),
 ("B",220,"S",3,"Todd",4.0),
 ("B",101,"M",3,"Jon",3.33),
 ("A",999,"N",3,"Rachel",1.33)]

Eu também quero isso:

[("A",100,"Q",3,"Todd",2.0),
 ("A",549,"D",3,"Todd",2.0),
 ("B",220,"S",3,"Todd",4.0),
 ("B",203,"R",3,"Rachel",1.66),
 ("A",200,"P",1,"Rachel",0.0),
 ("A",999,"N",3,"Rachel",1.33),
 ("B",273,"F",1,"Mike",2.66),
 ("B",101,"M",3,"Jon",3.33)]

O que eu preciso é que todas as tuplas que contêm Todd estejam próximas uma da outra e assim por diante para cada nome. A ordem em que os nomes aparecem não importa, apenas porque eles estão próximos um do outr

sortedList= show . sortBy byName . (map stringToTuple) . (map words) . lines

Esta é a linha de código que estou chamando de ordenar por. Entendo que preciso criar uma funçãobyName que de alguma forma descobrirá se as tuplas compartilham um nome comu

Qualquer ajuda para me orientar na direção certa para escrever obyName seria apreciado. Obrigad

questionAnswers(2)

yourAnswerToTheQuestion