Size: a a a

Compiler Development

2020 June 03

AT

Alexander Tchitchigi... in Compiler Development
Andrei Kurosh
В каком-то языке можно было объявить лямбда-выражение неявно, используя магияческий идентификатор «it» - не то Groovy, не то Kotlin. То есть «it+2» являлось короткой записью для x => x + 2. Тут тоже помогло бы
И Groovy, и Kotlin, и Ruby (из которого все и содрали). В Scala можно вообще (_ - 2).
источник

RE

Roman Elizarov in Compiler Development
В Groovy и Kotlin (который это взял из Groovy) есть it но лямбды объявляются явно используя { }. Это в Scala есть неявные лямбды, но используется не it, а _
источник

AK

Andrei Kurosh in Compiler Development
Alexander Tchitchigin
И Groovy, и Kotlin, и Ruby (из которого все и содрали). В Scala можно вообще (_ - 2).
Вот запись с нижним подчеркиванием имхо самая наглядная из этих вариантов
источник

AT

Alexander Tchitchigi... in Compiler Development
Andrei Kurosh
Вот запись с нижним подчеркиванием имхо самая наглядная из этих вариантов
Ага, особенно когда у тебя три таких подчёркивания в лямбде. 😉
источник

AT

Alexander Tchitchigi... in Compiler Development
Начинаются всякие _1, _2, и т.д.
источник

RE

Roman Elizarov in Compiler Development
И в Ruby вроде ничего такого нет. Если не прав, то киньте ссылку на доки, пожалуйста.
источник

RE

Roman Elizarov in Compiler Development
А в Scala в погоне за компактностью произошёл реальный abuse нижнего подчеркивания: https://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala
источник

RE

Roman Elizarov in Compiler Development
Alexander Tchitchigin
Начинаются всякие _1, _2, и т.д.
В Scala вроде так нельзя. Похожий механизм есть в Swift где имена по умолчанию это $0, $1 но там синтаксис лямбд с параметрами явный (надо заключать в фигурные скобки).
источник

λ

λoλdog in Compiler Development
Roman Elizarov
В Scala вроде так нельзя. Похожий механизм есть в Swift где имена по умолчанию это $0, $1 но там синтаксис лямбд с параметрами явный (надо заключать в фигурные скобки).
можно, но это синтаксис для тьюплов
источник

λ

λoλdog in Compiler Development
а для лямбды будет просто три _
источник

λ

λoλdog in Compiler Development
скорее всего
источник

AT

Alexander Tchitchigi... in Compiler Development
Roman Elizarov
В Scala вроде так нельзя. Похожий механизм есть в Swift где имена по умолчанию это $0, $1 но там синтаксис лямбд с параметрами явный (надо заключать в фигурные скобки).
Помнится, в Clojure так сделали. Или как-то так.
источник

AK

Andrei Kurosh in Compiler Development
Alexander Tchitchigin
Ага, особенно когда у тебя три таких подчёркивания в лямбде. 😉
Имхо это уместно только для случая с одним аргументом - если их больше, то нужно писать обычную лямбду с именованными аргументами, иначе будет каша
источник

AT

Alexander Tchitchigi... in Compiler Development
Andrei Kurosh
Имхо это уместно только для случая с одним аргументом - если их больше, то нужно писать обычную лямбду с именованными аргументами, иначе будет каша
И тогда у нас "повисает" очень специальный синтаксис для единственного применения. Так себе решение, ИМХО. 😊
источник

AK

Andrei Kurosh in Compiler Development
Alexander Tchitchigin
И тогда у нас "повисает" очень специальный синтаксис для единственного применения. Так себе решение, ИМХО. 😊
Практически весь синтаксический сахар - это укороченная запись некого частного случая, который широко встречается :)
источник

AT

Alexander Tchitchigi... in Compiler Development
Andrei Kurosh
Практически весь синтаксический сахар - это укороченная запись некого частного случая, который широко встречается :)
Мы начали с Haskell, а там, хвала богам, синтаксический сахар (любой из них) покрывает существенно больше единственного случая.
источник

МБ

Михаил Бахтерев... in Compiler Development
Andrei Kurosh
Имхо это уместно только для случая с одним аргументом - если их больше, то нужно писать обычную лямбду с именованными аргументами, иначе будет каша
Ну. По опыту Clojure, до 3 аргументов нормально читаются в такой вот nameless форме. Они пишутся через %n - номер аргумента. Но чаще всего удобнее писать частичные применения (каррирование), если заранее подумать о порядке аргументов.
источник

RE

Roman Elizarov in Compiler Development
Опять же в Clojure явный синтаксис для лямбд через #( )
источник

AT

Alexander Tchitchigi... in Compiler Development
В соседнем чате зашёл разговор про GC и игры. Мне на этот счёт давно уже подумалось, что внедрение very low pause GC в новых JVM (Shenandoah GC и кто там ещё) вкупе с и так давно дофига быстрым JIT и оптимизированным по выделению памяти и переиспользованию объектов кодингом в недрах движков, сделает их пригодными для очень широкого круга игр, кром там самых навороченных AAA блокбастеров. Предположительно, GraalVM сможет и ещё расширить спектр платформ для тех, кому очень нужно.
Или у меня слишком поверхностный и оптимистичный взгляд?
источник

AT

Alexander Tchitchigi... in Compiler Development
Учитывая, к тому же, что всё больше и больше heavy lifting делается шейдерами...
источник