Я пытался гуглить для этого, но все, что я получил, было историями о младших знаменитостях. Учитывая отсутствие документации, что такое DList?
Это список различий, аналогичный «Список различий как функции»
scala> val (l1, l2, l3) = (List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))
l1: List[Int] = List(1, 2, 3)
l2: List[Int] = List(4, 5, 6)
l3: List[Int] = List(7, 8, 9)
Эффективное добавление:
scala> l1 ::: l2 ::: l3
res8: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
Неэффективное добавление. Это создает промежуточный список (l1 ++ l2), затем ((l1 ++ l2) ++ l3)
scala> l1 ++ l2 ++ l3 // inefficient
res9: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
DList
сохраняет дополнения, и требуется только создать один полный список, эффективно вызывая:
scala> List(l1, l2, l3) reduceRight ( _ ::: _)
res10: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
Со страницы проекта в scalaz :
DList, тип данных для представления элементов одного типа с операциями добавления / добавления с постоянным временем.
Это тип данных в неканоническом пакете scalaz , полезный для типизированных списков с доступом с постоянным временем на обоих концах. (Уловка заключается в том, чтобы ввести в Google "scala" И "dlist".)