Size: a a a

Scala User Group

2020 June 07

S

Simon in Scala User Group
никто не мешает нарушить сингатуру макроса - просто придется его перевызвать
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Simon
никто не мешает нарушить сингатуру макроса - просто придется его перевызвать
Дело не в нарушении сигнатуры макроса, а в том, что магнолия требует стабильной ссылки с одноместным тайп-мембером Typeclass
источник

Oℕ

Oleg ℕizhnik in Scala User Group
И метода комбайн на него ссылающегося
источник

S

Simon in Scala User Group
да, это проблема
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Бинарный тайпкласс нельзя вынести, не объявляя дополнительной ссылки с зафиксированной частью тайп аргументов
источник

S

Simon in Scala User Group
при этом магнолия не позволит зафиксировать один из параметров во внешнем трейте
источник

S

Simon in Scala User Group
она требует вызова из объекта
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Simon
при этом магнолия не позволит зафиксировать один из параметров во внешнем трейте
Позволит
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну в итоге, я не отрицаю, что задачу можно решить, если писать свой макрос, но тогда и без магнолии можно
источник

S

Simon in Scala User Group
The macro Magnolia.gen[T] binding must be made in a static object, and the type constructor, Typeclass, and the methods combine and dispatch must be defined in the same object.
источник

S

Simon in Scala User Group
так что не получится зафиксировать
источник

S

Simon in Scala User Group
Oleg ℕizhnik
Ну в итоге, я не отрицаю, что задачу можно решить, если писать свой макрос, но тогда и без магнолии можно
нет, это я вчера под вечер сооброжать перестал - магнолия вообще не поможет с 2 типовыми параметрами
источник

S

Simon in Scala User Group
так что надо просто на шейплесе докрутить проверку уникальности типа
источник

S

Simon in Scala User Group
в принципе это сделать можно, но не стабильно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Simon
нет, это я вчера под вечер сооброжать перестал - магнолия вообще не поможет с 2 типовыми параметрами
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Щас бы докам верить
источник

S

Simon in Scala User Group
вот и верь после этого людям...
источник

S

Simon in Scala User Group
одна проблема: даже на магнолии это будет не стабильно - там такой же имплиситный поиск. и проверку "отсутствия" можно сделать только как проверку фейла поиска "наличия", а фейл там может быть по многим причинам
источник

S

Simon in Scala User Group
так что всегда будут случаи когда поиск успешен не смотря на наличие нескольких полей с искомым типом
источник

S

Simon in Scala User Group
Это, кстати, работает и без отдельной строчки: https://scastie.scala-lang.org/D4Ep5nj5Q0Gi7XCijUYt1Q
источник