Size: a a a

Scala User Group

2021 February 28

NV

Nikita Vilunov in Scala User Group
Ну собственно «ваша лямбда» и будет анонимным классом
источник

NV

Nikita Vilunov in Scala User Group
Переслано от Aλexander Semenov
val transact = new (DBIO ~> F) {
 override def apply[A](dbio: DBIO[A]): F[A] = {
   import schema.databaseProfile.api._

   deferFuture(_ => db.run(dbio.transactionally))
 }
}
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Nikita Vilunov
Ну собственно «ваша лямбда» и будет анонимным классом
нет, с 2.12 лямбда - это не анонимный класс
не знаю, зачем ты форвардишь Александра, если спор о синтаксисе из тофу идёт
источник

NV

Nikita Vilunov in Scala User Group
Oleg ℕizhnik
нет, с 2.12 лямбда - это не анонимный класс
не знаю, зачем ты форвардишь Александра, если спор о синтаксисе из тофу идёт
Потому что сообщение про синтаксис из тофу было ответом на сложный код Александра
источник

VG

Vladislav Golub in Scala User Group
Tim
программист, который не шарит в том как исполняется код в ВМ, иногда пишет очень стрёмный в плане перформанса код
два топ примера из практики
на втором месте .toMap который вызывали на mutable кеше, который мог быть большой 10-20 мб, несколько сотен раз в секунду чтобы получить immutable Map
там дальше ни на что это вообще не влияло
убрать .toMap - минус 60 процентов primary allocation, минус 30 процентов загрузки прода (а прод тогда был 72 ядра)

а на первом месте - lazy val за каким-то хером в теле метода, которая тогда (2.11 по-моему скала ещё была) автоматически становилась глобальным тред локом для всех тредов, которые этот метод вызывают

так что фп важно для программиста all the way down
Осталось только понять причём тут знание виртуальной машины
источник

AS

Aλexander Semenov in Scala User Group
      val transact: DBIO ~> F = funK { dbio =>
       deferFuture { _ =>
         import postgresSchema.databaseProfile.api._

         postgresDatabase.run(dbio.transactionally)
       }
     }
К слову я всё равно заюзал Тофу, потому что я Тофу-мэн 🤩
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Nikita Vilunov
Потому что сообщение про синтаксис из тофу было ответом на сложный код Александра
ну да, если уже есть тофу, можно отуда импортировать, если нет - можно скопипастить, оба варианта лучше, чем ручной new и кайнд прожекторные лямбды
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aλexander Semenov
      val transact: DBIO ~> F = funK { dbio =>
       deferFuture { _ =>
         import postgresSchema.databaseProfile.api._

         postgresDatabase.run(dbio.transactionally)
       }
     }
К слову я всё равно заюзал Тофу, потому что я Тофу-мэн 🤩
зачем импорт то внутри
источник

T

Tim in Scala User Group
Vladislav Golub
Осталось только понять причём тут знание виртуальной машины
вм как среды исполнения фп кода - в широком смысле, везде где это критично
источник

NV

Nikita Vilunov in Scala User Group
Oleg ℕizhnik
нет, с 2.12 лямбда - это не анонимный класс
не знаю, зачем ты форвардишь Александра, если спор о синтаксисе из тофу идёт
https://t.me/scala_ru/304537 вот тут лямбда не генерит анонимный класс?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
нет
источник

AS

Aλexander Semenov in Scala User Group
Oleg ℕizhnik
зачем импорт то внутри
минимально возможный скоуп для него, а что он кому-то ещё нужен?
источник

NV

Nikita Vilunov in Scala User Group
А что она генерит
источник

Oℕ

Oleg ℕizhnik in Scala User Group
funK буквально возвращает свой аргумент
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Tim
вм как среды исполнения фп кода - в широком смысле, везде где это критично
если говорить про тайплевел/зио/моникс, то для «фп кода» там используется не сама жвм, а отдельный рантайм поверх нее (собственно ИО-ЗИО-Таск)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Nikita Vilunov
А что она генерит
оставляет лямбдой, которая компилится в SAM лямбду в жвм, которая реализуется через invokeDynamic
источник

NV

Nikita Vilunov in Scala User Group
Oleg ℕizhnik
funK буквально возвращает свой аргумент
Так я не про фунК, а про лямбду внутри
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Nikita Vilunov
Так я не про фунК, а про лямбду внутри
она тоже просто лямбда
источник

Oℕ

Oleg ℕizhnik in Scala User Group
вопрос ,как лямбды в JVM реализованы?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Tim
вм как среды исполнения фп кода - в широком смысле, везде где это критично
ну и описанные «беды» были и правда не с ВМ, а с деталями реализации стдлибы или языка
источник