Вопросы по теме 'scala-macros'
Получение структурного типа с помощью методов анонимного класса из макроса
Предположим, мы хотим написать макрос, который определяет анонимный класс с некоторыми членами типа или методами, а затем создает экземпляр этого класса, статически типизированный как структурный тип с этими методами и т. Д. Это возможно с помощью...
8803 просмотров
schedule
05.09.2022
Где я могу узнать о создании 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 просмотров
schedule
30.03.2024
как определить псевдоним типа для более высокого типа с помощью аннотации макроса scala (предпочтительно с использованием квазикавычек)
Я разрабатываю аннотацию макроса scala, которая обогащает объекты различными определениями ( см. макрос формы воспроизведения ). Среди прочего я хочу, чтобы объект содержал псевдоним типа
type WFS = FS[_, _, _, _]
для различного количества...
361 просмотров
schedule
11.04.2022
Могу ли я получить пакет/владельца из 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 просмотров
schedule
01.11.2023
Обнаружение расширения макросов в Scala AST
У меня есть плагин компилятора, который работает после фазы ввода текста. Плагин должен игнорировать любой код, созданный из макроса. (У меня проблема с позиционированием диапазона, и я думаю, что самое простое решение - просто игнорировать код...
79 просмотров
schedule
03.05.2022
Каков наилучший способ избежать столкновения между двумя определениями класса типов в бесформенном
Shapeless имеет аккуратный класс типов механизм порождения , который позволяет вам определять классы типов и получать автоматические порождения для любого класса типов.
Чтобы использовать механизм деривации в качестве пользователя класса типов, вы...
162 просмотров
schedule
12.02.2023
Есть ли обходной путь для ошибки 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 просмотров
schedule
27.08.2023
Компилятор презентаций Scala метод locateTree
Я использовал API-интерфейс компилятора презентаций scala, или, точнее, метод locateTree , чтобы получить AST некоторого фрагмента исходного кода, а затем получить его необработанное представление с помощью вызова showRaw(ast) , но результат,...
123 просмотров
schedule
30.10.2022
Сохранить имена параметров метода в макросе scala
У меня есть интерфейс:
trait MyInterface {
def doSomething(usefulName : Int) : Unit
}
У меня есть макрос, который перебирает методы интерфейса и работает с именами методов и параметрами. Я получаю доступ к именам методов, делая что-то...
442 просмотров
schedule
27.06.2023
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 просмотров
schedule
07.08.2022