Size: a a a

2020 January 26

λ

λоλторт in rust_offtopic
Doge Shibu
Не надо читать кривые гайды.

А терминология там не сложнее всякого стандартного ОО.
Он наверное про то, что в ООП всё называется словосочетаниями из знакомых слов, а в ФП всякие слова обычно неизвестные. Только вот тут надо уточнить, что те словосочетания для стороннего слушателя могут либо звучать как бред, либо обозначать что-то не имеющее ничего общего с тем, о чем говорит программист.
источник

B

Bogdan in rust_offtopic
Gymmasssorla
Мне вчера сеньёр-бывший олимпиадник доказывал, что непроверяемые исключения, null - это класс. Я из чата удалился.
В смысле непроверяемые?

Не про UncheckedExceptions с джавы случаем речь?
источник

DS

Doge Shibu in rust_offtopic
λоλторт
Он наверное про то, что в ООП всё называется словосочетаниями из знакомых слов, а в ФП всякие слова обычно неизвестные. Только вот тут надо уточнить, что те словосочетания для стороннего слушателя могут либо звучать как бред, либо обозначать что-то не имеющее ничего общего с тем, о чем говорит программист.
Ну ок, паттерн flyweight.

Вот мне прям вообще не понятно, чем его название понятнее каких-нибудь монад или функторов.
источник

G

Gymmasssorla in rust_offtopic
λоλторт
Он наверное про то, что в ООП всё называется словосочетаниями из знакомых слов, а в ФП всякие слова обычно неизвестные. Только вот тут надо уточнить, что те словосочетания для стороннего слушателя могут либо звучать как бред, либо обозначать что-то не имеющее ничего общего с тем, о чем говорит программист.
Кстати, помнишь ты говорил, что бросание исключений ссылочно прозрачно? В красной книге Скала наоборот говорят, т.к. Если сделать x = throw Exception и заменить в разных блоках функции, то поведение программы изменится
источник

λ

λоλторт in rust_offtopic
λоλторт
Он наверное про то, что в ООП всё называется словосочетаниями из знакомых слов, а в ФП всякие слова обычно неизвестные. Только вот тут надо уточнить, что те словосочетания для стороннего слушателя могут либо звучать как бред, либо обозначать что-то не имеющее ничего общего с тем, о чем говорит программист.
И тут ещё хрен знает, что проще заучить: новое слово или новую комбинацию знакомых слов с контринтуиьивным смыслом
источник

G

Gymmasssorla in rust_offtopic
Bogdan
В смысле непроверяемые?

Не про UncheckedExceptions с джавы случаем речь?
Непроверяемые исключения в Java - это RuntimeException
источник

λ

λоλторт in rust_offtopic
Gymmasssorla
Кстати, помнишь ты говорил, что бросание исключений ссылочно прозрачно? В красной книге Скала наоборот говорят, т.к. Если сделать x = throw Exception и заменить в разных блоках функции, то поведение программы изменится
В строгом языке так
источник

B

Bogdan in rust_offtopic
Gymmasssorla
Непроверяемые исключения в Java - это RuntimeException
Ну там те которые обязательно ловить называются checked а другие unchecked (или наоборот, я их путаю всегда)

Потому что на самом деле кроме рантайм ексепшенов есть еще Error-ы
источник

B

Bogdan in rust_offtopic
И таки пришло комюнити к тому, что все юзают рантайм ексепшены, ибо так проще, лол


+ Со стримами неаозможно юзать чекед исключения
источник

G

Gymmasssorla in rust_offtopic
Bogdan
Ну там те которые обязательно ловить называются checked а другие unchecked (или наоборот, я их путаю всегда)

Потому что на самом деле кроме рантайм ексепшенов есть еще Error-ы
Наследники RuntimeException являются проверяемыми исключениями, все остальные исключения - непроверяемые. Error - это вообще не исключение, это Throwable
источник

B

Bogdan in rust_offtopic
Даа, тип того.

Я же говорю, я их путаю, проверяемые и непроверяемые
источник

G

Gymmasssorla in rust_offtopic
Bogdan
И таки пришло комюнити к тому, что все юзают рантайм ексепшены, ибо так проще, лол


+ Со стримами неаозможно юзать чекед исключения
Да. Проблема проверяемых исключений в том, что синтаксис должен быть достаточно выразительным. Нужно иметь возможность пересекать множества ошибок из лямбд и тому подобное, легче просто использовать RuntimeException, а правильнее - Result<T, E> 😊
источник

KR

Kai Ren in rust_offtopic
А интерфейсами пересекать множества нельзя?
источник

KR

Kai Ren in rust_offtopic
А блин, это ж не Раст. Нельзя свой интерфейс для других типов реализовать.
источник

G

Gymmasssorla in rust_offtopic
А как бы это сделал, если было бы можно?
источник

KR

Kai Ren in rust_offtopic
trait MyError: Exception {}
impl MyError for ErrorA {}
impl MyError for ErrorB {}
try { throw ErrorA } catch(MyError e) {}
источник

KR

Kai Ren in rust_offtopic
Или в джаве по интерфейсу нельзя ловить исключения?
источник

B

Bogdan in rust_offtopic
Kai Ren
Или в джаве по интерфейсу нельзя ловить исключения?
нельзя
источник

KR

Kai Ren in rust_offtopic
А пыха вроде умела, беда)
источник

G

Gymmasssorla in rust_offtopic
Kai Ren
trait MyError: Exception {}
impl MyError for ErrorA {}
impl MyError for ErrorB {}
try { throw ErrorA } catch(MyError e) {}
void compose(f: A => B, g: B => C): A => C {
   (a) g(f(a))
}


Возвращаемая лямбда должна иметь пересечение исключений из f и g. Как это сделать?
источник