Size: a a a

Programming Offtop

2020 October 06

QH

Quantum Harmonizer in Programming Offtop
Bogdan Panchenko
Это к Ильмиру. Но я сейчас проверю, мы там про колекции говорили, и инлайн боксится в колекции потому что дженерика в рантайме нет, если оно будет - то и бокс можно опустить.

Например value as T тебе может не выдать ворнинг если это reified
> потому что дженерика в рантайме нет
не нравится мне этот вывод)
источник

QH

Quantum Harmonizer in Programming Offtop
саша сок #KotlinGang
чтобы не было стирания типов
зачем?
источник

с#

саша сок #KotlinGang... in Programming Offtop
ну иногда нужно получить класс дженерика
источник

QH

Quantum Harmonizer in Programming Offtop
саша сок #KotlinGang
ну иногда нужно получить класс дженерика
не надо
источник

с#

саша сок #KotlinGang... in Programming Offtop
в сериализации это полезно
источник

с#

саша сок #KotlinGang... in Programming Offtop
Quantum Harmonizer
не надо
ясно
источник

BP

Bogdan Panchenko in Programming Offtop
Quantum Harmonizer
> потому что дженерика в рантайме нет
не нравится мне этот вывод)
Нууу, я увы не настолько подкован, что бы говорить заумными словечками. Вообще скорей компилятору нужна гарантия что список нужного типа, например val list = listOf<Int>() - в локальном скоупе он понимает что за тип у колекции
источник

BP

Bogdan Panchenko in Programming Offtop
И может гарантировать "что в рантайме также" (не знаю как корректно сказать) - следовательно он может приметь ряд оптимизаций
источник

QH

Quantum Harmonizer in Programming Offtop
Bogdan Panchenko
Нууу, я увы не настолько подкован, что бы говорить заумными словечками. Вообще скорей компилятору нужна гарантия что список нужного типа, например val list = listOf<Int>() - в локальном скоупе он понимает что за тип у колекции
Конкретно в вальхалле под капотом ArrayList'а будет массив, у которого в заголовке есть пометка о том, что там инты. Это всё ещё не позволяет нам узнать, что listOf<List<Set<String>>>()::T::T::T == String
источник

BP

Bogdan Panchenko in Programming Offtop
Quantum Harmonizer
Конкретно в вальхалле под капотом ArrayList'а будет массив, у которого в заголовке есть пометка о том, что там инты. Это всё ещё не позволяет нам узнать, что listOf<List<Set<String>>>()::T::T::T == String
А я и не говорил что это нам нужно знать. Нам это важно доказать в билде либо рантайме, а как это уже не столь важно. Как я написал вполне может хватить и проверки в рантайме
источник

AM

Andrew Mikhaylov in Programming Offtop
У меня тут инсайд, чем закончится 2020-й:
https://twitter.com/shipovniks/status/1313423834385649666
источник

BP

Bogdan Panchenko in Programming Offtop
это апомнило мне немного из нашей оперы
источник

BP

Bogdan Panchenko in Programming Offtop
а ты это и бросал)
источник

VN

Viktor Noskin in Programming Offtop
какие-то странные у нее планы по захвату мира х)
источник

AN

Alexander Nozik in Programming Offtop
Quantum Harmonizer
Конкретно в вальхалле под капотом ArrayList'а будет массив, у которого в заголовке есть пометка о том, что там инты. Это всё ещё не позволяет нам узнать, что listOf<List<Set<String>>>()::T::T::T == String
Вот этого никто не обещал. Вальхалла на уровне вм работает, а не на уровне стдлибы. Она сделает так, чтобы инт не боксился на выходе, а уж его размещение в памяти - не ее проблема.
источник
2020 October 07

ML

Mikhail Levchenko in Programming Offtop
я внезапно осознал, что такое на самом деле коэффекты и теперь они мне нужны
источник

ML

Mikhail Levchenko in Programming Offtop
кто нибудь уже фигачил их на котлине?
источник

ML

Mikhail Levchenko in Programming Offtop
дайте потрогать
источник

QH

Quantum Harmonizer in Programming Offtop
Mikhail Levchenko
я внезапно осознал, что такое на самом деле коэффекты и теперь они мне нужны
Так-с, и чё это?)
источник

ML

Mikhail Levchenko in Programming Offtop
Quantum Harmonizer
Так-с, и чё это?)
Короче, в TEA часто такой паттерн есть – в ответ на Msg A нужно дозапросить данные (например, из SharedPreferences). Как обычно это решается – кидаешь Effect(Cmd) и в ответ ждёшь Msg B, и уже когда он пришёл, достаёшь из него данные и компьютишь свою логику

Coeffect – это способ избежать этой нудятины. Ты в ответ на Msg A бросаешь Coeffect<R>, и функцию (R) -> State, Effect. И коэффект сначала выполняется, а потом вызывает твою функцию и ты в шоколаде
источник