Описание тега scala-3

0 ответов

Существующие типы на основе подстановочных знаков в Scala3

Как отмечалось в документации Scala 3, экзистенциальные типы, которые не могут быть выражены с помощью подстановочных знаков, обычно отбрасываются. Вот мой код в Scala 2 trait Test[A] val t: T forSome { type T <: Test[Int] } = null //fine Демо Sc…
21 фев '21 в 19:48
1 ответ

Макрос Tasty Reflection в Scala 3: CyclicReference

Я пытаюсь получить доступ к параметрам метода, который реализуется как макрос. object Macros { def impl()(using Quotes): Expr[Unit] = { import quotes.reflect._ val params: List[List[ValDef]] = { def nearestEnclosingMethodParams(owner: Symbol): List[…
14 фев '21 в 12:55
1 ответ

Доступ к значению аннотации в Scala 3.0

Я создал аннотацию в scala и использовал ее следующим образом: object Main extends App { println(classOf[Annotated].getAnnotations.length) import scala.reflect.runtime.universe._ val mirror = runtimeMirror(cls.getClassLoader) } final class TestAnnot…
17 фев '21 в 22:15
1 ответ

Добавить Scala 3.0 SDK в IntelliJ

В настоящее время компилятор dotty выпустил свой первый Release Candidate, который будет выпущен в ближайшие несколько месяцев. Я обновил плагин IntelliJ scala до EarlyAccess, чтобы он работал со Scala 3.0, его проблема с подсветкой синтаксиса решен…
18 фев '21 в 15:20
1 ответ

Синтаксис для именованных заданных / используемых объектов в Scala 3 (Dotty)

Есть ли однострочный способ предоставить именованную ссылку на значение, которое должно быть неявно доступным (т. Е. Доступным с using синтаксис) без устаревшего implicitключевое слово? Согласно документам , я бы ожидал, что следующее будет работать…
06 мар '21 в 23:04
0 ответов

Почему эта-расширение полиморфного метода не приводит к значению полиморфной функции?

Scala 2 не имеет значений полиморфных функций, поэтому полиморфные методы, расширяющие эту функцию, дают только scala> def f[A](a: A): A = ??? def f[A](a: A): A scala> f _ val res0: Nothing => Nothing = $Lambda$7757/1502613782@45af2c1 Однак…
06 апр '21 в 23:40
2 ответа

Невозможно использовать flatMap в качестве метода расширения для самописного экземпляра монады

Я пробовал использовать flatMap на WriterT, и это было успешно. Так что проблема, наверное, в моем типе, но я не могу найти, что с ним не так. import cats.Monad import cats.syntax.flatMap._ object Main extends App { type Optional[A] = A | Null val m…
29 мар '21 в 01:58
1 ответ

Встраивание scala 3 не выполняется - очень простой пример

Я изучаю возможности встраивания в scala3. Я составил простой пример, в котором я хочу, чтобы метод проверки, создающий запечатанный класс, применялся во время компиляции: import scala.compiletime.{ error, codeOf } sealed abstract class OneOrTwo(val…
10 апр '21 в 11:42
0 ответов

Конструктор фабрики для классов типов в Scala3

При построении классов типов в Scala обычной практикой является создание конструктора фабрики, который может упростить реализацию класса типов для многих типов. В качестве примера у нас может быть такой класс типа: trait SqlTypeConversion[-A] { def …
08 апр '21 в 19:55
0 ответов

Добавить новый метод в класс типа в Scala

Я пытаюсь добавить новый метод toA()в utils.Try класс. Но я столкнулся с проблемой типа: case Успех возвращает нас v : Any, но мне нужно . Как получить v : V? Возможно мне нужна функция Apply? Я новичок в этом и не понимаю object Example: enum AorB[…
13 апр '21 в 15:48
2 ответа

какой эквивалент scala.tools.nsc.MainGenericRunner в dotty?

что эквивалентно scala.tools.nsc.MainGenericRunner в точечном? Я проверил посылку dotty.tools.dotc https://github.com/lampepfl/dotty/tree/master/compiler/src/dotty/tools/dotc, но ничего не нашел. Я пытался использовать dotty.tools.dotc.Run но я полу…
13 апр '21 в 16:19
1 ответ

TypeTest для преодоления стирания с помощью универсальных типов в scala3

Я не понимаю, как TypeTests в scala3 может заменить использование TypeTag в scala 2. Вариант использования, позволяющий сопоставить общий параметр, например x: List[Int]. Конкретный пример, который я пытаюсь решить: enum Foo : case Bar() case Baz() …
11 апр '21 в 12:14
2 ответа

Разница в выводе между [F <: Список [A], A] и [F [_] <: Список [A], A]

Рассмотрим разницу в выводе аргумента типа для конструкторов типов в следующих двух предложениях параметра типа. $ scala3-repl scala> def f[F <: List[A], A](as: F) = as def f[F <: List[A], A](as: F): F scala> f(List(42)) val res0: List[I…
11 апр '21 в 22:13
3 ответа

Аналогия между `F[_ <: A] <: B` на уровне типа и`f: A => B` на уровне значения

Предполагая F[_ <: A] <: B как типовой аналог f: A => B, позволять [F[_ <: Int] <: List[Int], A <: Int], тогда не следует вводить приложение F[A] уступить, когда A = Int, так f(List(42)) должен компилироваться в следующем случае $ …
12 апр '21 в 12:41
0 ответов

Пример использования доброго полиморфизма с AnyKind

Дано trait Int // proper type trait List[A] // 1st-order-kinded type constructor trait Functor[F[_]] // higher-order-kinded type constructor taking type constructor trait I[H[F[_]]] // higher-order-kinded type constructor taking higher-order type co…
13 апр '21 в 19:03
1 ответ

Как спросить Scala, существуют ли доказательства для всех экземпляров параметра типа?

Учитывая следующую функцию сложения на уровне типов чисел Пеано sealed trait Nat class O extends Nat class S[N <: Nat] extends Nat type plus[a <: Nat, b <: Nat] = a match case O => b case S[n] => S[n plus b] скажем, мы хотим доказать …
14 апр '21 в 17:39
1 ответ

Почему ассоциативность операторов работает по-разному для методов расширения Scala 3 и обычных методов?

Когда я вручную преобразовал код Scala 2 в Scala 3, приоритет операторов для моего DSL изменился, и мне потребовалось много времени, чтобы отладить и исправить. Кажется, что обработка отличается: extension (i1: Int) def ~>:(i2: Int) = i1 < i2 …
18 апр '21 в 17:27
3 ответа

Переопределение метода перечисления в Scala 3

Есть ли способ переопределить метод в перечислении Scala 3, как в Java? public enum Test { ONE { @Override public int calc() { return 1; } }, TWO { @Override public int calc() { return 2; } }; public abstract int calc(); } Я пробовал что-то подобное…
24 апр '21 в 22:48
1 ответ

Можно ли в scala 2 использовать макрос или любую языковую функцию для переписывания механизма реификации абстрактного типа во всех подклассах? Как насчет Scala 3?

В scala 2 известно, что макросы строго локальны и выполняются только один раз, когда класс определен. Эта функция кажется особенно слабой при сочетании с абстрактным типом, поскольку процесс преобразования абстрактных типов в конкретный обычно обход…
0 ответов

Могут ли типы объединения Scala 3 «исправить» проблему Map[String, Any]?

Идиоматический код Scala максимально безопасен. В результате к размышлению относятся неодобрительно, и если в итоге вы получите Any в ваших статических типах у вас проблема. Например, популярная библиотека Circe может без какого-либо шаблона преврат…
01 май '21 в 12:47