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

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

Макрос 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 просмотров

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

Сохранить имена параметров метода в макросе 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 просмотров

Когда выполняются аннотации макросов Scala? (макро рай)
Я попытался реализовать пример аннотаций макросов Scala, как описано в документации . . Мне удалось скомпилировать аннотации макросов до фактического проекта, который их использует, т. Е. @compileTimeOnly("enable macro paradise to expand macro...
235 просмотров

Cats-tagless - ошибка аннотации макроса Scala
Я создал простой trait , используя cats-tagless lib: @finalAlg @autoFunctorK(true) trait MyService[F[_]] { def put(element: Element): F[Element] def get(elementId: Id): F[Element] def all(): F[List[Element]] def delete(elementId:...
393 просмотров

Повторное использование аннотаций на основе макросов Scala
Рассмотрим аннотацию на основе макросов Scala, такую ​​как @ memoise из macmemo . Для аннотации требуются два аргумента: максимальный размер кеша и время жизни, например, @memoize(maxSize = 20000, expiresAfter = 2 hours) Допустим, вы...
102 просмотров

Как проверки типов макросов Scala преобразуют идентификаторы в типы?
Я пытаюсь создать макрос аннотации, который можно применить только к определенному типу. Когда я запускаю свои тесты, я вижу ошибку типа не найден, когда аннотация применяется только к объектам верхнего уровня. Мой код макроса: trait...
186 просмотров