v> для fallbacks в “disjunctions” (\/) Validation это Аппликативный функтор (|@|): (a |@| b) { case (a, b) => }.disjunction Возвращайте `Validation` из своих API`s
Конвееры хранят только ограниченное количество данных, а поток бесконечный Случайные выборки (reservoir sampling) сохранять с вероятностью = (размер резервуара) / M
встречающиеся чаще определённого порога Можно самые популярные элементы таскать по корзинам, пронумерованным, как top 10, сохраняя на каждой такой корзине частоту.
.collect запускает вычисления Машинное обучение (регрессии всякие...) ETL-приложение может быть распределённым Коннекторы для Elastic search, Cassandra DStream даёт распределённые вычисления
• Miniboxing это плагин для компилятора добавляющий аннотацию @miniboxed Class[@miniboxed T] даёт увеличение скорости ~25%-75% • Есть предупреждения компиллятора, показывающие, куда поставить @miniboxed
закоммитить бяку Linter — старый, нет документации, забили Флаг компилятора — только когда меняется именно ЭТОТ файл -Xfatal -warnings -deprecation -Xlint В 2.11.4 можно настраивать разные политики для разных модулей
Интерполяция строк Pimp my class (с typeclass’ами) Value classes; Fututes / Promises Actors перенесли в Akka Модульность компилятора Макросы, quasiquotes, scala.meta
реализовать что-то из `applyDynamic`, `applyDynamicNamed`, `selectDynamic`, `updateDynamic`) 2.11 — ускоренная компиляция, инкрементальная перекомпиляция в sbt 2.12 — java 8, spores, rx, новые коллекции
Scala.js Папочка /client в исходниках • Статически типизированные REST APIs можно положить в папочку /shared • Юнит-тесты общие на сервере и клиенте! • Общий код и библиотеки
представлять в программах исчезающе мало • С очень длинными и иррациональными числами нельзя работать совсем по-честному, поэтому нужно знать ограничения своего подхода (потому, что память ограничена) • Точность можно настраивать (lazy) • Сравнивать числа в общем виде не получается!
и Applicative для fail-fast Futures (чтобы падали, когда хотя бы один из sequence отвалился) • Причём авторам хотелось, чтобы типы у последовательности Future не терялись • Помещайте самые важные type parameters в конец, а то будет боль