Ещё важный момент в том, что в академической среде заканчивать продолжение подобным образом считается некоторым faux pas. Но в современной речи это все равно норма
Просто в русском языке есть примерно три способа эту букву написать: самый адекватный, он же самый непривычный — английская «h», самый древний, стрёмный — через букву «г» (собственно, образование в русском языке таких слов как «гигиента», «бегемот» и даже «Иешуа Га-Ноцри» Булгакова. А также ещё миллион слов), а где-то посерединке идёт вот это вот «х».
UPD: это, пожалуй, должен быть ответ на строчку выше.
Стоит заметить, что если у вас уже есть готовый API для, например, Company или Department, то вы не сможете добавлять методы, возвращающие Stream и будет иметь смысл использовать что-то типа:
На самом деле, мне кажется, что это выглядит даже опрятнее, чем метод автора, так как не требуется добавлять какие-то непонятные дополнительные методы.
Всё-таки если employee может быть null, то нам нужно изначально брать Optional.ofNullable(employee), потому как Optional.of(employee) как раз выдаст NullPointerException в случае employee == null. Дока
Подобный трюк очень подробно описывается в книге Ч. Петцольда «Код». Вернее, не как трюк, а как единственный разумный способ реализации разности в обычной системе записи (two’s complement) int-чисел.
А теперь вопрос к знающим: существует ли вероятность того, что такая метаморфоза произойдёт с обычной флешкой? Тогда история из предисловия явно увеличивает шансы быть реальной=)
Что интересно, для получения одного из другого можно использовать встроенные функции curry и uncurry, что довольно удобно для выполнения всяких операций над парами.
var True = function (x) {
return function (y) {
return x;
};
};
var False = function (x) {
return function (y) {
return y;
};
};
var If = function (p) {
return function (t) {
return function (e) {
return p(t)(e);
}
};
};
опять же выглядит сильно страшнее, чем
true = \x -> \y -> x
false = \x -> y -> y
if = \cond -> \yes -> \no -> cond yes no
Ещё важный момент в том, что в академической среде заканчивать продолжение подобным образом считается некоторым faux pas. Но в современной речи это все равно норма
UPD: это, пожалуй, должен быть ответ на строчку выше.
Казалось бы, «абстракция, которую нельзя обсудить (поспорить), не является абстракцией в принципе.»
</зануда>
Хотя…
Company
илиDepartment
, то вы не сможете добавлять методы, возвращающиеStream
и будет иметь смысл использовать что-то типа:На самом деле, мне кажется, что это выглядит даже опрятнее, чем метод автора, так как не требуется добавлять какие-то непонятные дополнительные методы.
employee
может бытьnull
, то нам нужно изначально братьOptional.ofNullable(employee)
, потому какOptional.of(employee)
как раз выдастNullPointerException
в случаеemployee == null
.Дока
Например, превращает список пар в список их сумм.
Надо понимать, что функции эти действуют для двух аргументов, больше — либо самому писать, либо удовлетворяться встроенными, которые, впрочем, есть и для 3х аргументов: hackage.haskell.org/package/utility-ht-0.0.5.1/docs/Data-Tuple-HT.html
(UPD: да, не обновил перед отправкой)
fact получается явно не сложнее:
опять же выглядит сильно страшнее, чем