Compondo uma lista de todos os pares

Sou novo no Scala, tendo tido uma experiência muito limitada com programação funcional através do Haskell.

Eu gostaria de tentar compor uma lista de todos os pares possíveis construídos a partir de uma única lista de entrada. Exemplo:

val nums = List[Int](1, 2, 3, 4, 5)   // Create an input list
val pairs = composePairs(nums)        // Function I'd like to create

// pairs == List[Int, Int]((1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1) ... etc)

Eu tentei usarzip em cada elemento com toda a lista, esperando duplicar o item em todo o todo. Não funcionou (apenas correspondeu ao primeiro par possível). Não sei como repetir um elemento (Haskell faz isso comcycle etake Eu acredito), e eu tive problemas em seguir a documentação do Scala.

Isso me deixa pensando que provavelmente há uma maneira mais concisa e funcional de obter os resultados desejados. Alguém tem uma boa solução?

questionAnswers(3)

yourAnswerToTheQuestion