Size: a a a

2020 July 30

DC

Denis Chikanov in pro.jvm
Apache DOG™
Хотел опшн как у людей с public class None extends Option<Void>
Звучит, как причина не писать на джаве
источник

AB

Andrey Belyaev in pro.jvm
Apache DOG™
Хотел опшн как у людей с public class None extends Option<Void>
Это не отвечает на вопрос, какая задача решается, но, наверное, так не выйдет. Можно поиграться с <? extends > и <? super >, но что у вас там за ситуация - не знаю.
источник

AE

Alexandr Emelyanov in pro.jvm
Andrey Belyaev
Это не отвечает на вопрос, какая задача решается, но, наверное, так не выйдет. Можно поиграться с <? extends > и <? super >, но что у вас там за ситуация - не знаю.
Сейчас будет что то про не соответствие фп и математике
источник

IO

Iaroslav Orlov in pro.jvm
Alexandr Emelyanov
Сейчас будет что то про не соответствие фп и математике
не, это из теории типов
источник

IO

Iaroslav Orlov in pro.jvm
давайте начну: здоровые люди не пишут на джаве, потому что void не работает как unit type
источник

AB

Andrey Belyaev in pro.jvm
Да ладно вам, может, там вполне конкретная задача, которую спокойно можно решить в Java. Просто надо подсказать, как.
источник

D

Dreamerinnoise in pro.jvm
Andrey Belyaev
Да ладно вам, может, там вполне конкретная задача, которую спокойно можно решить в Java. Просто надо подсказать, как.
задача конкретная — нормальные опшионалы
источник

IO

Iaroslav Orlov in pro.jvm
Andrey Belyaev
Да ладно вам, может, там вполне конкретная задача, которую спокойно можно решить в Java. Просто надо подсказать, как.
ну, есть "интерфейс" Option<T>, который реализован двумя типами - None как Option от ничего и Some<T> : Option<T>
источник

IO

Iaroslav Orlov in pro.jvm
и нужен тип, обозначающий ничего
источник

NG

Nikita Gryzlov in pro.jvm
Iaroslav Orlov
и нужен тип, обозначающий ничего
В джаве это реализовано не на типах, а на объектах. См. Optional.empty()
источник

IO

Iaroslav Orlov in pro.jvm
Iaroslav Orlov
и нужен тип, обозначающий ничего
в котлине для этого юзают просто класс без сигнатуры типа Option (без параметра), но нормальным был бы bottom type
источник

IO

Iaroslav Orlov in pro.jvm
вот он и спрашивает про j.l.Void
источник

IO

Iaroslav Orlov in pro.jvm
Nikita Gryzlov
В джаве это реализовано не на типах, а на объектах. См. Optional.empty()
ну так они и подразумевают, что это не нормальный option
источник

SP

Sergey Potekhin in pro.jvm
"нормальным был бы bottom type" Какую проблему это решает? чтобы можно было создавать разновидности сферического вакуума?
источник

NG

Nikita Gryzlov in pro.jvm
Iaroslav Orlov
ну так они и подразумевают, что это не нормальный option
Лямбды в джаве тоже не лямбды. Толку от этого знания? Задачу оно не решает
источник

IO

Iaroslav Orlov in pro.jvm
Sergey Potekhin
"нормальным был бы bottom type" Какую проблему это решает? чтобы можно было создавать разновидности сферического вакуума?
а вот здесь мы и подходим к несоответствию япов фп и математике. но я действительно не уверен, что это прям нужно, особенно на голой жабе
источник

IO

Iaroslav Orlov in pro.jvm
Nikita Gryzlov
Лямбды в джаве тоже не лямбды. Толку от этого знания? Задачу оно не решает
очень даже лямбды, просто громоздко объявляются. и реализованы прилично (metafactory+invokedynamic)
источник

SP

Sergey Potekhin in pro.jvm
все-таки япы для практических целей создаются, а не для высокого искусства
источник

IO

Iaroslav Orlov in pro.jvm
Sergey Potekhin
все-таки япы для практических целей создаются, а не для высокого искусства
ну, голый х64 свои практические цели вполне выполняет, и без лишнего искусства
источник

D

Dreamerinnoise in pro.jvm
Sergey Potekhin
все-таки япы для практических целей создаются, а не для высокого искусства
Function<Integer, Optional<Integer>> f = x -> {
   if (x == null) {
       x = -1;
   } else if (x == 2) {
       x = null;
   } else {
       x = x + 1;
   }
   return Optional.ofNullable(x);
};

Optional.of(1).flatMap(f).equals(f.apply(1)); // ok
Optional.ofNullable((Integer) null).flatMap(f).equals(f.apply(null)); // упс
источник