
Dmitry
05.11.2016
11:23:19
или что тому кто вынужден подхватить бомбануло?

Daniel
05.11.2016
11:24:46

Oleksandr
05.11.2016
11:25:32
что поощряется писать код, для понимания которого надо вникать во что-то весьма долго

Dmitry
05.11.2016
11:26:07
@dveim к сожалению такое встречается весьма часто.

Google

Oleksandr
05.11.2016
11:28:34
я совершенно не в курсе, из-за чего именно тот тип психанул, но ситуаций вида "а вот здесь я напишу мета-абстрактный метод с шейплесом и скалаз, просто потому что могу" в скале ненормально много

Юрий
05.11.2016
11:30:37
примеры - это хорошо. Но когда ты ваще не втыкаешь базу - это не ок

Dmitry
05.11.2016
11:30:57
не только в скале, в любом языке, @dveim

Юрий
05.11.2016
11:31:20
а книжка кстати бесплатная по шейплесу?

Daniel
05.11.2016
11:32:56

Dmitry
05.11.2016
11:33:48
Юрий Copyright 2016 Dave Gurnell. Text and diagrams licensed CC-BY-SA 3.0. Code samples licensed Apache 2.0
пахнет не платно..
хаха, телеграм-парсер лох.

Alexander
05.11.2016
12:13:31

Timothy
05.11.2016
12:14:52
уже и PR есть для нее https://github.com/milessabin/shapeless/pull/654

Vladimir
05.11.2016
12:24:29

Oleksandr
05.11.2016
12:33:21
тогда в чем смысл использовать сложные высокоуровневые инструменты, если все равно нужно обьяснение?
когда надо писать код так, чтобы ошибки отсеивались на этапе компиляции, а когда лучше написать документацию?
(на примерах от /** may return null */ def f(...): T = null vs def f(...): Option[T], и по возрастающей)

Nikolay
05.11.2016
12:35:56

Google

Vladimir
05.11.2016
12:37:02
я не считаю, что документация и type-safety взаимо-исключают друг друга. Документация не отсеет ошибки на этапе компиляции :) Но она поможет разобраться в сложном доказательстве или макросе, если кому-то понадобится его подправить.

KrivdaTheTriewe
05.11.2016
12:37:32
можно хотябы ссылку на руководство с примерами дать)

Vladimir
05.11.2016
12:37:39
я за то чтобы была и документация и shapeless :) сам всегда свою пруфы документирую
@krivdathetriewe https://github.com/underscoreio/shapeless-guide

KrivdaTheTriewe
05.11.2016
12:38:57

Daniel
05.11.2016
12:39:25

Vladimir
05.11.2016
12:40:17
@krivdathetriewe сорри, не так тебя понял :) примеры чаще всего тривиальные и в проде что-то посложнее, но это точно лучше чем ничего)

Oleksandr
05.11.2016
12:41:58
для примера с null vs Option это очевидно, потому он и "самый простой"
а вот, допустим, сложный метод с сигнатурой на три строчки, который принимает только инстансы определенных классов с определенными ограничениями (например, только простые числа)
может, лучше забить и написать require с комментом, и не забыть про тест?

Daniel
05.11.2016
12:44:49

Oleksandr
05.11.2016
12:45:38
но ведь пишущий код запустит его, и увидит рантайм исключение

Daniel
05.11.2016
12:46:29
Ага, только рантайм исключение может выпасть не при отладке, а когда код уже неделю в продавшего
Продакшене

Oleksandr
05.11.2016
12:47:09
может
а непередаваемые ощущения от распутывания доказательства в сигнатуре будут 100%

Vladimir
05.11.2016
12:47:13
@dveim а здравый смысл никто не отменял, я require тоже пользуюсь довольно часто. есть просто кейсы, где без шейплеса объем бойлерплейта будет настолько огромным, что 20-строчный пруф, пусть и сложный, гораздо удобнее чем сотни строк написаных вручную

Oleksandr
05.11.2016
12:48:31
100 строчек require?
можно пример?

Vladimir
05.11.2016
12:49:19
нет, я сейчас не про валидацию говорю а про generic преобразования. вообще не понимаю какая связь shapeless и require, если честно
тут уж скорее refined

Oleksandr
05.11.2016
12:49:59
ну, я не про конкретно шейплес, а вообще про стремление сделать все тайпсейфно
шейплес просто моя любимая мишень для подколок

Daniel
05.11.2016
12:50:46

Google

Oleksandr
05.11.2016
12:51:19
пока что, насколько я вижу, все так или иначе сводится к "здравому смыслу"

Vladimir
05.11.2016
12:51:32
да, как и в любом хорошем стремлении
фанатизм враг хорошего

Daniel
05.11.2016
12:51:54

Daniel
05.11.2016
12:52:03
Только ситхи все возводят в абсолют?

Vladimir
05.11.2016
12:52:56
@dveim ты же любишь макросы) те же яйца, только в профиль

Oleksandr
05.11.2016
12:53:23
ну, да, их надо использовать ещё аккуратнее

Vladimir
05.11.2016
12:55:50
и кстати, если уж честно, то и на обычной джава-скале могут такого понаписать, что черт ногу сломит. так что да, здравый смысл FTW :)

Oleksandr
05.11.2016
12:58:05
есть мнение, что этих самых require + тестов хватает в повседневное жизни
проблема "здравого смысла" — кому-то этот кусок кода очевиден настолько, что он даже не трудится писать коммент, а кому-то это головоломка
и вовсе не факт, что второй человек "не шарит" — он может прекрасно разбираться в нюансах тюнинга SVM, но все равно не понимать вроде бы простой код

Daniel
05.11.2016
13:02:34
Тут подчас дело в том, что простота != удобство. Часто взять scalaz - самый прямой способ сделать то, что нужно, бывает что сроки ужаты настолько, что выбирать не приходится

Dmitry
05.11.2016
13:33:34
ужасы какие рассказываешь. Прямо так себе и представляю картину: о нет, баг в проде, бабки теряем, клиенты уходят! срочно! scalaz to the rescue!

Daniel
05.11.2016
14:05:14
Не совсем так: двухнедельный спринт, хренова прорва фич, коллега в отпуске. Времени на тесты особо нет, да что там, даже запустить особо некогда. В таких условиях "хитрые типы" реально ограждают от ошибок
В прод ушло вовремя, ничего не упало
Может я слишком везучий)

Oleksandr
05.11.2016
14:19:14
а сколько вас было?

Andrii
05.11.2016
21:31:52
ребята, простите за нубский вопрос, но что я тут не так делаю? (все в одном файле). Вообще все началось с того, что "implicit val a" был в компаньон обджекте
--------------------------------
class ImplicitTest {
implicit val a = "Vasya"
def printName(implicit name: String) = {
println(s"Hello, $name")
}
}
object runner {
def main(args: Array[String]): Unit = {
val implTest = new ImplicitTest
implTest.printName
}
}

KrivdaTheTriewe
05.11.2016
21:34:17
Импорт сделай
import implTest._

Andrii
05.11.2016
21:36:43
спасибо

Google

KrivdaTheTriewe
05.11.2016
21:37:38
Нп

Юрий
06.11.2016
14:19:31
/stat@combot

Combot
06.11.2016
14:19:31
combot.org/chat/-1001034178083

Grigory
06.11.2016
14:33:15
Я сдал позиции
все пропало, проклятие!

Nikolay
06.11.2016
14:34:18
Я сдал позиции
пора увольняться, чтобы посвятить себя чату в полной мере

KrivdaTheTriewe
06.11.2016
14:34:48
увольняться никогда не поздно , чтобы свой стартап сделать

Alisa
06.11.2016
15:36:27
какие книги по scala вы посоветуете чтобы досконально понимать этот язык? (я из ооп мира)
сейчас вот курс по функциональному программированию заканчиваю, но полного понимания нет, всё как-то "на пальцах", хоть и сам создатель этот курс ведет, хотелось бы все тонкости знать и понимать

KrivdaTheTriewe
06.11.2016
15:37:39
https://www.safaribooksonline.com/library/view/programming-in-scala/9780981531687/

Denis
06.11.2016
16:07:06
Еще Scala in Depth

Alisa
06.11.2016
16:11:39
псипки c:

D
06.11.2016
16:12:27
про scala for the impatient вспоминали ?
а, видимо нет

Alisa
06.11.2016
16:14:04
даже читали в прошлом году, но как-то без проработки примеров не зашло, надо перечитать видимо?

Dmitriy
06.11.2016
16:40:41
Красную книгу, functional programming in scala. И learn you a haskell for great good.

Vladimir
06.11.2016
16:40:42
Одерский полнее заходит кмк, но он и потолще

D
06.11.2016
16:41:25

Vladimir
06.11.2016
16:43:38

D
06.11.2016
16:44:05
задолбали своей русификацией всего и вся, рли

Google

D
06.11.2016
16:44:13
ты его ещё Мартыном назови :D
«ты, Одерски, мартын, сын мартына и дети твои будут мартынами»

Vladimir
06.11.2016
16:48:11
На самом деле это травма от переводческого образования. Когда знаешь как правильно, но тебя мало кто понимает. Начинаешь нарочно русифицировать, и это становится дурной привычкой

Alex
06.11.2016
16:57:10
Мартин-на-Одере

Wystan
06.11.2016
22:50:31

KrivdaTheTriewe
06.11.2016
22:53:26
книги все платные
как бы
та же книга от одерски платная

Wystan
06.11.2016
22:54:05
learn your haskell for gg бесплатна
шах и мат, аутист!

KrivdaTheTriewe
06.11.2016
22:55:10
»haskell
»2016

D
06.11.2016
22:55:54
а что не так с хаскилями в 2016?

KrivdaTheTriewe
06.11.2016
22:56:38
да всё нормально
просто каждый довод предыдущего оратора не выдерживает никакой критики

Wystan
06.11.2016
23:06:20

KrivdaTheTriewe
06.11.2016
23:10:12
просто я помогаю человеку, а ты нет

Wystan
06.11.2016
23:10:55
Подсовывая бесполезную книжку пятилетней давности за которую надо платить?

KrivdaTheTriewe
06.11.2016
23:11:08
посмотри , что я подсунул
не хочешь платить - укради