В Scala я могу использовать концепцию фантомных типов (как описано, например, здесь ) для маркировки типов и удаления этой информации во время выполнения . Интересно, можно ли помечать примитивные типы фантомными типами, не помещая их в коробку.
Примером может быть функция, которая позволяет Int только проходить, если это простое число. Подпись может выглядеть примерно так:
def filterPrime(i: Int): Option[Int with IsPrime]
Функция возвращает значение Some (i)
, если i
является простым числом или None
иначе.
Можно ли реализовать заявленную идею в Scala без упаковки примитивного целого числа?