Предположим, что у меня есть следующий класс:
public class FixExpr {
Expr<FixExpr> in;
}
Теперь я хочу ввести общий аргумент, абстрагироваться от использования Expr:
public class Fix<F> {
F<Fix<F>> in;
}
Но Eclipse не нравится:
Тип F не является общим; он не может быть параметризован с помощью аргументов < Fix <F →
Возможно ли это вообще или я пропустил что-то, что заставляет этот конкретный экземпляр сломаться?
Некоторая справочная информация: в Haskell это обычный способ записи общих функций; Я пытаюсь передать это на Java. Аргумент типа F в приведенном выше примере имеет вид * → * вместо обычного вида *. В Haskell это выглядит так:
newtype Fix f = In { out :: f (Fix f) }