Вопросы по теме 'scala-macros'

Получение структурного типа с помощью методов анонимного класса из макроса
Предположим, мы хотим написать макрос, который определяет анонимный класс с некоторыми членами типа или методами, а затем создает экземпляр этого класса, статически типизированный как структурный тип с этими методами и т. Д. Это возможно с помощью...
8803 просмотров

Где я могу узнать о создании AST для макросов Scala?
Где я могу узнать, как создать AST, генерируемые макросами Scala? Скаладок не так полезен, как хотелось бы. Например: abstract def Apply(sym: Universe.Symbol, args: Universe.Tree*): Universe.Tree A factory method for Apply nodes. Но как...
4442 просмотров
schedule 30.09.2023

простой scala-макрос
Я хотел бы иметь макрос scala, который делает следующее: Когда я пишу: myCreateCityMacro("paris") myCreateCityMacro("vallorbe") Я хотел бы получить: val paris = new City("paris") val vallorbe = new City("vallorbe")
270 просмотров
schedule 17.05.2022

Неявные макросы не найдены в Scala 2.10.1?
Похоже, что ключевое слово implicit не работает при применении к макросу def s. Например, возьмите следующий код: // Compilation unit A: case class Foo[A] // end A. // Compilation unit B: implicit def implicitFoo[A]: Foo[A] = macro...
198 просмотров
schedule 28.09.2022

Как отлаживать макросы Scala с помощью Eclipse
Я пытаюсь установить точку останова в реализации макроса Scala с помощью Eclipse IDE и не могу Во-первых: Scala Macros Rock! До сих пор я предпочитал Clojure Scala, но с макросами я больше не уверен Я пытаюсь создать макрос, который вернет...
757 просмотров
schedule 04.01.2024

Макросы Scala: создание карты из полей класса в Scala
Допустим, у меня много похожих классов данных. Вот пример класса User , который определяется следующим образом: case class User (name: String, age: Int, posts: List[String]) { val numPosts: Int = posts.length ... def foo = "bar" ......
9472 просмотров
schedule 03.02.2024

Макросы Scala Def — как получить элемент параметризованного типа символа?
Я пытаюсь получить параметризованный тип члена символа в контексте MACRO. У меня есть только символ (не могу использовать weakTypeOf[List[Blah]]), потому что я перебираю кучу классов. val meWantArg = classSymbol.member("paramList":...
249 просмотров
schedule 31.01.2023

Ошибка типа при использовании параметра типа в качестве аргумента типа для другого типа, передаваемого в реализацию макроса
Я пытаюсь создать макрос, который позволит мне захватить текст выражения, передаваемого конструктору. Мне нужен текст выражения для целей отладки. Реализация макроса следующая: package nimrandsLibrary.react.macroImpl object Macros { def...
558 просмотров
schedule 23.05.2022

Объединение переданного тела функции в выражение, переписанное макросом
Я играл с новыми функциями макросов Scala 2.11. Я хотел посмотреть, смогу ли я сделать следующее переписывание: forRange(0 to 10) { i => println(i) } // into val iter = (0 to 10).iterator while (iter.hasNext) { val i = iter.next...
848 просмотров

как определить псевдоним типа для более высокого типа с помощью аннотации макроса scala (предпочтительно с использованием квазикавычек)
Я разрабатываю аннотацию макроса scala, которая обогащает объекты различными определениями ( см. макрос формы воспроизведения ). Среди прочего я хочу, чтобы объект содержал псевдоним типа type WFS = FS[_, _, _, _] для различного количества...
361 просмотров

Могу ли я получить пакет/владельца из ClassDef в реализации аннотации макроса Scala?
Учитывая (Скала 2.10.3), package models @MyAnnotation case class MyClass() Как получить имя пакета в реализации макроса? Я пробовал: 1) Было предложено typeCheck как здесь , но это приводит к переполнению стека (хотя я вижу, что он...
204 просмотров
schedule 10.12.2023

Макрос Scala для печати кода?
Я хочу сделать что-то вроде этого: def assuming[A](condition: => Boolean)(f: => A): A = { require(condition, /* print source-code of condition */) f } Пример использования: def fib(n: Int) = n match { // yes, yes, I know this is...
1430 просмотров

Обнаружение расширения макросов в Scala AST
У меня есть плагин компилятора, который работает после фазы ввода текста. Плагин должен игнорировать любой код, созданный из макроса. (У меня проблема с позиционированием диапазона, и я думаю, что самое простое решение - просто игнорировать код...
79 просмотров
schedule 03.05.2022

Каков наилучший способ избежать столкновения между двумя определениями класса типов в бесформенном
Shapeless имеет аккуратный класс типов механизм порождения , который позволяет вам определять классы типов и получать автоматические порождения для любого класса типов. Чтобы использовать механизм деривации в качестве пользователя класса типов, вы...
162 просмотров

Есть ли обходной путь для ошибки Scala SI-7914 — возврат метода применения из макроса Scala?
В нашей библиотеке у нас есть макрос, определенный следующим образом: def extractNamed[A]: Any = macro NamedExtractSyntax.extractNamedImpl[A] Этот макрос использует сигнатуру своего типа для возврата метода apply , аргументы которого...
79 просмотров
schedule 24.02.2024

макросы scala, генерирующие имплициты
Я пытаюсь сгенерировать некоторые имплициты с помощью макроса - сжатая версия макроса выглядит так: object Implicits { def generate(c:Context):c.Expr[Unit]={ import c.universe._ c.Expr[Unit] { q""" object Dud{...
700 просмотров
schedule 01.12.2022

Используйте статическое объявление Java в реализации макроса
Я пытаюсь использовать статический метод в классе Java T в реализации макроса: def macroImpl[T : c.WeakTypeTag](c: Context): c.Expr[ResultType] = { import c.universe._ val tpe = weakTypeOf[T] val someStaticMethod =...
145 просмотров

Компилятор презентаций Scala метод locateTree
Я использовал API-интерфейс компилятора презентаций scala, или, точнее, метод locateTree , чтобы получить AST некоторого фрагмента исходного кода, а затем получить его необработанное представление с помощью вызова showRaw(ast) , но результат,...
123 просмотров

Сохранить имена параметров метода в макросе scala
У меня есть интерфейс: trait MyInterface { def doSomething(usefulName : Int) : Unit } У меня есть макрос, который перебирает методы интерфейса и работает с именами методов и параметрами. Я получаю доступ к именам методов, делая что-то...
442 просмотров

scala.meta.Lit.type не принимает параметры
Когда я запускаю следующее: import scala.meta._ class Test { val x = q"1" } Я получаю, что scala.meta.Lit.type не принимает параметры val x = q "1" масштаб_2.11:1.8.0 рай_2.11.8:3.0.0-M7 Я пытаюсь заставить работать некоторые...
72 просмотров