Top.Mail.Ru
? ?

Imagejdevelop


jdevelop, записи по тегу scala — Живой Журнал


Метка: scala

А в целом why ever not?
Imagejdevelop
Итак, про Go. И Scala. Такой сравнительный неанализ, не претендующий ни на что.

Go — это чтобы писать код, который работает. У него течет память (иногда), от if err := funcCall(); err != nil { .... } поначалу кровят глаза и хочется плюнуть на все и уйти в туман.

Но потом оказывается, что if err - это не так уж и плохо. Более того, это часто даже и хорошо. Никаких мучений от недостатка IO монад и отсутствия try/catch я не испытываю.

Самое замечательное что могло случиться в Go - это тулинг, и Единственно Правильный Формат Кода. А также ограниченное количество способов отстрелить себе все.

В целом моя продуктивность в Го намного продуктивнее всего того что я когда-то писал на Скале. И это все собирается моментально, и просто работает. Когда я пишу рест-сервис - я просто пишу рест-сервис, а не выясняю что нынче трендово - ZIO, FS2 или Akka. И где больше псевдографики.

Не надо SBT, или Gradle, не надо выбирать между сортами говна морфизмов или 100500 способами прицепить библиотеку на 50 мегабайт чтобы записать одной строчкой кода то, что можно записать пятью строчками простого велосипеда.

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

Ушла моя эпоха функци анальщины.
Метки: ,

The power of projections
Imagejdevelop
Предположим, что у вас есть интерфейсов с сигнатурами вида

trait DaoPersistence {

  def doA(...): Option[A]

  def doB(a: A): Option[B]

}


и есть например желание сделать из них, как в хаскеле, ду-нотацию с матюками

поскольку матюки могут в целом быть разные, то можно применять вот такой вот многословный трюк

(for (

  myA <- doA(...).toEither("A not defined").right;
  myB <- doB(myA).toEither("B is not defined). right

) yield myB ) match {
  case Left(msg) ⇒ doSomeError(msg)
  case Right(b) ⇒ doComplete(b)
}


и почти хаскель, и никакого ScalaZ.
Метки:

Image