@scala_ru

Страница 141 из 1499
Nick
05.10.2016
10:05:09
фп никак не противоречит null

Aleksey
05.10.2016
10:05:42
ага и в scala тоже
На практике в Scala за null бьют примерно так же как за var, если этот var не стейт актора.

Vladimir
05.10.2016
10:05:47
чистое фп подразумевает что если у тебя есть объект типа T, то он не может быть null

скала это не чистый фп язык

Google
Viacheslav
05.10.2016
10:06:24
На практике в Scala за null бьют примерно так же как за var, если этот var не стейт актора.
ну да, но на практике можно понаписать всякого, и нуллы будут на ура. Дык вот поэтому и вопрос - почему нет Required

Ilya
05.10.2016
10:07:45
/scala

Борис
05.10.2016
10:07:46
фп не фп имхо не важо, тут вопрос про типизацию

Grigory
05.10.2016
10:08:11
мне кажется разгооры про чистоту скалы (лол она грязна = сайдэффектовая) это оффтоп

Aleksei
05.10.2016
10:08:24
да

Grigory
05.10.2016
10:08:31
а использовать не использовать нулы это уже кейсы

Aleksei
05.10.2016
10:08:34
давайте уже забаним кого нибудь, а то только одни разговоры

Viacheslav
05.10.2016
10:08:37
Vladimir
05.10.2016
10:09:16
потому что ты не сможешь реализовать Required, который будет тебе обеспечивать отсутсвие null в compile time. а в рантайме проверять то же самое что проверять на null

Viacheslav
05.10.2016
10:10:26
чойта?

опшн вроде тоже это не обеспечивает

Aleksey
05.10.2016
10:11:04
ну да, но на практике можно понаписать всякого, и нуллы будут на ура. Дык вот поэтому и вопрос - почему нет Required
В послдений раз NPE я видел пару месяцев назад, когда юзал NIO2 без оберток. В Scala коде ни кто оне возвращает null. Это как "goto" и "глобальные переменные".

Google
Nick
05.10.2016
10:11:09
а Erlang эт функциональный язык?

Grigory
05.10.2016
10:11:34
блин ну не каждый фп язык чист

окамл не чистый

Nick
05.10.2016
10:11:51
да что за бред

null вообще ортогонален ФП

Viacheslav
05.10.2016
10:12:19
Aleksei
05.10.2016
10:18:50
на прямую?

Daniel
05.10.2016
10:19:15
Не очень понял вопрос. Во втором случае будет что-то типа { "subModel": { "d1": {"field1": 10, "field2": [2,3,4,5,6,6,7]} }, "i": 5, "str": "some string value" }
Так не работает у меня. Прошел только вариант, который в гисте. Хотелось же, чтобы обрабатывался вариант { "subModel": {"field1": 10, "field2": [2,3,4,5,6,6,7]}, "i": 5, "str": "some string value" }

Oleksandr
05.10.2016
10:19:54
null ломает многие системы типов, если про него не думать специально на практике все просто -- за наллы бить ногами

Viacheslav
05.10.2016
10:20:46
а если чел уже свалил с конторы, вопрос что бить: 1. искать чела? 2. бить монитор? 3. бить соседа? ...

Oleksandr
05.10.2016
10:20:58
исправить кож

код

Aleksei
05.10.2016
10:21:10
не бить, а читать

читать и читать русскую классику

Viacheslav
05.10.2016
10:21:24
пару десятков тысяч строк кода - оо это будит весело)

Aleksei
05.10.2016
10:21:31
пока "на прямую" не превратится в НАПРЯМУЮ

Grigory
05.10.2016
10:21:35
кончайте уже с налами) это бед стайл офк

Nick
05.10.2016
10:22:16
Viacheslav
05.10.2016
10:22:32
чуваки я поэтому и спрашиваю - почему бед стайл не исправили на уровне компилятора. Ежу понятно что можно писать по соглашениям и осторожно и всё будет ок

Google
Nick
05.10.2016
10:22:35
местами null очень даже ничего

Aleksey
05.10.2016
10:22:36
Так не работает у меня. Прошел только вариант, который в гисте. Хотелось же, чтобы обрабатывался вариант { "subModel": {"field1": 10, "field2": [2,3,4,5,6,6,7]}, "i": 5, "str": "some string value" }
В таком случае только кастомные Reader/Writer :( Дело в том что если так сделать, то не понятно как обрабатывать случаи типа case class E(s1: D, s2: D)

Vladimir
05.10.2016
10:23:53
а если чел уже свалил с конторы, вопрос что бить: 1. искать чела? 2. бить монитор? 3. бить соседа? ...
постараться найти все "точки входа" этих null и обернуть их в Option. Все, компилятор теперь сам скажет, где возможна проблема

Oleksandr
05.10.2016
10:24:26
*оверхед от опшна, конечно

Daniel
05.10.2016
10:24:30
т.е. пушка нуждается в инфе, которая однозначно скажет, что здесь нужен такой то наследник трейта и не будет перебирать сама варианты?

Grigory
05.10.2016
10:25:51
в окмпиляторе не поправили засчет полной сометсимостью с джавой

hz как копмпилить код если у тебя в зависимостях какая джава либа

Grigory
05.10.2016
10:26:38
ахах)

ну все все

:D

Aleksey
05.10.2016
10:26:56
Daniel
05.10.2016
10:27:31
Конечно.
Ясно. Был еще момент с привидением имени класса к имени поля. Clazz превратится в "clazz", а MyClazz я так и не осилил. Пришлось в одно слово называть (хотя читаться стало лучше в конкретном месте =) )

Luger
05.10.2016
10:29:54
Обычно это решают запихиванием поля "$type ": "com.example.D.D1" но меня от такого в дрож бросает.
особенно это занятно, когда один и тот же json в некоем хранилище необходимо читать из разных проектов\модулей еще и на разных языках

Daniel
05.10.2016
10:30:34
Сейчас сработало в воркшите, дома почему-то сфейлился. Спасибо за помощь.

Google
Nick
05.10.2016
10:30:49
Aleksey
05.10.2016
10:39:49
а почему в дрож бросает?) можно ж передавать не класснеим
Не люблю служебную информацию в человекочитаемых форматах. Стараюсь ее максимально облагородить. Могу объяснить, почему в пушке сделаны вот такие конструкции { "fieldName": { "childOfSealedTrait": { ... } } }. Дело в том, что я обратил внимание, что у нас в проектах, почти везде во внешнем API, где используется перечисление на силед трейтах, наследники это либо кейсобжекты либо кейс-классы с одни полем. Кейс-обжекты пишутся как строки, а кейс-классы с одни полем пишутся без объекта-обертки ( case class Foo(x: Int = 1) --> 1 ). По этому такая запись получается компактной: { "fieldNameOfSt": "myCaseObject", "anotherFiledNameOfSt": { "foo" : 1 } }.

Oleksandr
05.10.2016
19:03:20
http://www.lihaoyi.com/post/BenchmarkingScalaCollections.html

любопытно сравнение Map/Set с их мутабельными аналогами, все совсем плохо

Wystan
05.10.2016
19:05:58
на 1024 элементах все одинаково

Oleksandr
05.10.2016
19:06:43
для меня шок, что вроде как на больших обьемах юзаются деревья

кто-то обьяснит, зачем?

Wystan
05.10.2016
19:07:44
а почему шок? сбалансированные деревья дают норм гарантии

Nick
05.10.2016
19:08:10
На больших объёмах хеш таблица получше будет =)

Admin
ERROR: S client not available

Oleksandr
05.10.2016
19:08:21
ну как видно, не особо те гарантии и норм

Nick
05.10.2016
19:09:21
Вообще я бы не стал данной статье доверять. Поскольку не может массив интов и лонгов в памяти одном место занимать

Oleksandr
05.10.2016
19:10:17
ну автор вроде шарит я пока не проверял вдумчиво

Daniel
05.10.2016
19:10:35
так у него и нет одинакового

разные объемы

меня больше смутили моменты, когда результат не получился имхо, надо там как минимум проверить тесты

Nick
05.10.2016
19:11:34
Как нет

Размер 1

Лонг и инт равны

Oleksandr
05.10.2016
19:11:45
ну к результатам доверия не добавляют числа типа "-200" время доступа

Google
Nick
05.10.2016
19:12:01
Он написал свою херню, когда есть jol

Нет ему доверия)

Daniel
05.10.2016
19:12:31
я похоже слепой

разные же

Nick
05.10.2016
19:13:15
Эт саиз 64

А ты смотри саиз 1

Где по 24

Daniel
05.10.2016
19:13:43
и?

Nick
05.10.2016
19:14:09
Что и? Как такое возможно

Daniel
05.10.2016
19:14:17
выравнивание

Nick
05.10.2016
19:14:18
Лонг в два раза больше занимает, не?

Daniel
05.10.2016
19:14:36
выравнивание идет на 8 байт

Oleksandr
05.10.2016
19:14:44
те что бит с байтом одинаково весят, тебя не смущает?)

(а это уже претензии к джвм)

Nick
05.10.2016
19:15:03
Не причём тут жвм

И какое выравнивание)))))

Не логично оно там, вроде каа

Oleksandr
05.10.2016
19:17:34
джвм все выравнивает для кратности 8, как это она ни при чем

(оракл/опен, по крайней мере)

Daniel
05.10.2016
19:18:50
пустой массив 16 байт дальше добавляют один элемент от 1 до 8 байт но за счет выравнивания на 8, они все одинаковые

Nick
05.10.2016
19:19:46
Ща постом посчитаю на бумажке

Страница 141 из 1499