Можно ли реализовать Functor на Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Можно ли реализовать Functor на Java?

Сообщение Anonymous »

Сегодня я столкнулся с небольшой проблемой. Рассмотрим небольшой класс-оболочку:

Код: Выделить всё

class Event {
T value;
Class type;
// other fields, getters and setters omitted for brevity
}
Теперь я оказался в ситуации, когда мне хотелось преобразовать Event в Event, сохранив при этом другие поля и обновив элемент type.

В конце концов я нашел самое простое «решение»:

Код: Выделить всё

Event new = new Event(old.getValue().toString(), String.class, other, fields);
Однако, работая с Haskell над моими любимыми проектами, я, естественно, жаждал функции типа fmap :: Functor f => (a -> b) -> f a -> f b (читай: учитывая функцию от a до b и функтор, содержащий что-то типа a, я получаю результат, содержащий b), и, не найдя стандартной реализации, я решил написать ее сам:

Код: Выделить всё

interface Functor {
Functor fmap( Func1 f );
}

// ... in Event:

Functor fmap( Func1 f ) {
S newValue = f.call(this.value);
return new Event( newValue, newValue.getClass(), other, fields);
}
Теперь с этим решением возникает проблема: после вызова fmap в Java у меня остается экземпляр типа Functor, в то время как та же функция в Haskell возвращает Event.

Есть ли способ вернуть мое событие (без его небезопасного приведения)?>

Подробнее здесь: https://stackoverflow.com/questions/229 ... rt-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»