Scala liste de concaténation, ::: vs ++

Quelle est la différence entre ::: et ++ pour la concaténation de listes de Scala?

scala> List(1,2,3) ++ List(4,5)
res0: List[Int] = List(1, 2, 3, 4, 5)

scala> List(1,2,3) ::: List(4,5)
res1: List[Int] = List(1, 2, 3, 4, 5)

scala> res0 == res1
res2: Boolean = true

De la documentation il ressemble ++ est plus général, alors que ::: est Listspécifiques. Est le dernier parce qu'il est utilisé dans d'autres langages fonctionnels?

  • Aussi ::: est un préfixe de l'opérateur, comme toutes les méthodes commençant par :
  • Les réponses assez bien délimiter le chemin que la scala a évolué dans des listes et de l'exploitant de l'homogénéité dans la Scala (ou l'absence de celui-ci). C'est un peu malheureux que quelque chose de si simple a une longue queue de minuties à confondre et à perdre le temps de tout Scala de l'apprenant. J'aimerais que ce soit stabilisé en 2.12.