Dr. Friedrich
Dr. Friedrich
И там до 22 элементов дописали, кажись :)
Dr. Friedrich
Это как у нас в сишарпе до 8
Doge
И там до 22 элементов дописали, кажись :)
В дотти без ограничений вроде бы
Dr. Friedrich
В дотти без ограничений вроде бы
Серьёзно? А как это сделано?
Dr. Friedrich
Специальная магия, или же настоящие вариадики добавлены в язык?
Dr. Friedrich
В любом случае, это неплохо, если так и есть.
Dr. Friedrich
https://dotty.epfl.ch/docs/reference/other-new-features/explicit-nulls.html там есть и другие интересные фичи
Doge
Серьёзно? А как это сделано?
После 22х хранят внутри в массивах знания: https://dotty.epfl.ch/docs/reference/dropped-features/limit22.html
Dr. Friedrich
Ага, супер, просто представление после компиляции поменяли
Dr. Friedrich
Ну хорошо, годится.
Dr. Friedrich
https://dotty.epfl.ch/docs/reference/dropped-features/do-while.html а вот тут я ни рожна не понял
Dr. Friedrich
while ({ i += 1 f(i) == 0 }) () Как мне понять, что этот код делает? %)
Dr. Friedrich
А, этот вот первый блок — это условие продолжения цикла. А тело пустое, типа
Dr. Friedrich
Ох, накрутили…
Doge
https://dotty.epfl.ch/docs/reference/dropped-features/do-while.html а вот тут я ни рожна не понял
Ну решили грамматику упростить, все равно do while, не очень часто в скале используются. Т.к. часто все равно приходится вместо циклов хвостовую рекурсию использовать
Dr. Friedrich
Но теперь понял.
Romɑn
ох уж эти боты, отвечают так будто я хочу их обмануть
Doge
Быстрей! Быстрей! ты с фбай?
Так у меня появился инет, отправляю пример с длиной тапла: import scala.compiletime._ object TupleExample with type Length[X] <: Int = X match case Unit => 0 case x *: xs => S[Length[xs]] inline def length(tuple: Any) <: Length[tuple.type] = constValue[Length[tuple.type]] // compiles summon[TupleExample.Length[(Int, Int, Int, Int)] =:= 4] // 4 println(TupleExample.length((1,2,3,4)))
Vladislav
https://twitter.com/_cartermp/status/1221418572875878401?s=12
Doge
@neftedollar @fvnever Такой пример с длиной и таплами понятен?
Dr. Friedrich
А в обычной скале тоже можно, или это дотти фича?
Dr. Friedrich
Пример отличный, спасибо!
Romɑn
и матч тайп в тему
Doge
Ого, инт можно на тайплевел выносить?
Уже в скала 2.13 можно. В скалах ниже можно через шейплесс
Doge
constValue что за магический оператор?
Он позволяет известное в компайлтайм на уровне типов значение использовать как обычное значение. constValue[4] == 4 constValue[Int] - ошибка компиляции
Doge
constValue что за магический оператор?
И это не оператор а функция из scala.compiletime
Doge
Надо понимать, что сейчас можно похожую штуку сделать на имплиситах как в шейплессе, но посторонний человек это не разберёт вообще.
George
Ну хорошо хоть не рекурсивную функцию
[slowpoke] let rec isNegative x = if x >= 0 then Ok x else match x with | -1 -> Error "must be non-negative" | -2 -> Error "must be non-negative" | -3 -> Error "must be non-negative" | -4 -> Error "must be non-negative" | -5 -> Error "must be non-negative" | -6 -> Error "must be non-negative" | -7 -> Error "must be non-negative" | v -> x + 5 |> isNegative
George
Надеюсь ты это придумал!
конечно! Но не удивлюсь, если у кого-нибудь здесь найдётся аналогичный пример в проде =)
George
учитывая, какие ужасы тут периодически проскакивают
Romɑn
@omgszer а у вас там спринг во все поля?
Hog
Надеюсь ты это придумал!
Реальность страшнее. http://govnokod.ru/
Romɑn
Реальность страшнее. http://govnokod.ru/
http://govnokod.ru/fsharp на f# говнокода нет официально!
Dr. Friedrich
http://govnokod.ru/fsharp на f# говнокода нет официально!
Потому что на нём никто не пишет!
Romɑn
Я что по твоему никто?
Dr. Friedrich
Я пишу
Не видал!
Romɑn
Не видал!
@fvnever ты поверишь @omgszer ?
Dr. Friedrich
А чего я не вижу — того нет
Romɑn
он видел
Dr. Friedrich
@fvnever ты поверишь @omgszer ?
А он тоже не пишет
Romɑn
пишет
Romɑn
у меян даже гит есть
Romɑn
с его коммитами
Romɑn
я все только усложняю
Romɑn
А чего я не вижу — того нет
Давай расшарю тебе экран
Dr. Friedrich
Romɑn
Выдумки!
упертый как форневер
Romɑn
@DogeShibu а что сейчас вместо акки использують?
Dr. Friedrich
@DogeShibu а что сейчас вместо акки использують?
Мне тоже интересно. Появились другие крутые фреймворки, или просто другой подход используют?
Romɑn
Я видел порты орлинса на жабу
Romɑn
но вряд ли их юзают
Romɑn
несмотря на 1,5к звезд
Doge
Мне тоже интересно. Появились другие крутые фреймворки, или просто другой подход используют?
Если распределенщина - то нет. Но для неё, имхо, лучше сразу брать какую-нибудь хорошую кластеризуемую бд + стайтлесс приложения. Если как абстракция над конкурентностью и многопоточностью, то лучше брать какой-нибудь monix или zio + fs2 (если нужны стримы).
Hog
Давай расшарю тебе экран
У наших загорелых братьев научился? Те тоже всё норовят скрин расшарить
Romɑn
фу опять БД
Romɑn
У наших загорелых братьев научился? Те тоже всё норовят скрин расшарить
я с такими не обшаюсь ваши личные ассоциации остаются вашими личными 😛
Doge
фу опять БД
А так ты будешь писать руками свою собственную распределенную бд, это опыт очень на любителя.
Romɑn
в дотнете есть отличный орлинс
Romɑn
не надо писать свою бд
Romɑn
этот подход по мне так отлично играет
Romɑn
да, акка оверхеднута чаще всего но путь был подходящим
Romɑn
SERJÃO ты каких кровей что сразу во флуд минуя основной?
Doge
не надо писать свою бд
Так как только будут нужны какие-то запросы по многим сущностям, то и в орлинс придется свои подпорки городить.
Romɑn
ничего сложного
Doge
по заветам cqrs
Тогда на каждый запрос городить какое-то свое мат представление, причем руками Очень удобно, прям зашибись
Doge
(но да, в каких-то областях норм будет)
Doge
(где таких запросов мало)
Romɑn
Тогда на каждый запрос городить какое-то свое мат представление, причем руками Очень удобно, прям зашибись
если тебе на каждый хапрос надо свое мат представление, то это у тебя что-то с архитектурой