Составление списка всех пар

Я новичок в Scala, у меня очень ограниченный опыт функционального программирования на Haskell.

Я хотел бы попробовать составить список всех возможных пар, построенных из одного входного списка. Пример:

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)

Я попытался использовать zipдля каждого элемента всего списка, надеясь, что он будет дублировать один элемент во всем списке. Это не сработало (только совпало с первой возможной парой ). Я не уверен, как повторить элемент (Haskell делает это с помощью cycleи takeя думаю ), и у меня были проблемы с документацией по Scala.

Это заставляет меня думать, что, вероятно, есть более лаконичный и функциональный способ получить желаемые результаты. У кого-нибудь есть хорошее решение?

8
задан KChaloux 3 August 2012 в 21:11
поделиться