Анонимные делегаты в Java 8 не являются лямбда-выражениями, т. к. в последних не может быть переменных изменяющих свои значения. Так каким боком тут слово лямбда? Причем здесь лямбда-исчисление? С таким же успехом определение функции можно было бы назвать (неверно) лямбда выражением.
Если я заблуждаюсь, скажите в чем? Не следует ли перестать употреблять слово сочетания "лямбда функция" потому, что это:
1) не лямбда
2) не функция
?
Upd2: Я убрал свое предложение. До добавлю уточнение. Насколько псевдо-лямбда-выражения соответствуют лямбде в настоящих функциональных языках?
Так сложилось, что в императивном программировании функцией называют подпрограмму (иногда - подпрограмму которая возвращает какое-то значение), без дополнительных требований к побочным эффектам. А оператор присваивания записывается тем же символом, который используется математиками для отношения равенства. Программирование - не математика, и тут термины могут иметь совсем другое значение. Чтобы привести все названия во всех языках к "правильным" формулировкам, понадобится слишком много усилий, которые в итоге всё равно пропадут впустую.
Можно считать, что используемые в программировании определения в некотором смысле расширяют математические: математические функции всё ещё можно представлять в виде функций в понимании языков программирования, а непосредственно после оператора присваивания выражения оказываются равны с точки зрения математики.
Точно так же и с лямбдами - понятие, пришедшее из лямбда-исчисления, обобщили, и теперь оно означает сокращённо записанную функцию с замкнутыми внешними переменными, опционально в форме AST. Бессмысленно писать гневные комментарии - теперь в программировании у терминов "лямбда-функция" и "лямбда-выражение" именно такое значение.
т. к. в последних не может быть переменных изменяющих свои значения
Откуда эта цитата? Суть лямбд в том, что у них нет имени и они не завязываются на конкретный идентификатор.
Вообще, можно у Фаулера почитать статью старенькую на этот счёт, которая актуальность всё ещё не потеряла:
Essentially a lambda is a block of code that can be passed as an argument to a function call
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Условие:
Почему при попытки получить методы из интерфейса, пишет Cannot resolve method 'isProduct()' и Cannot resolve method 'getMenuTitle()'ourMenuItemsя прописываю как ArrayList
в проекте (spring boot + embedded tomcat) я использую jar файл в котором есть класс
Создаю уведомление для приложения, вроде нормально работало, и резко не понимаю из-за чего(вроде ничего такого не делал) перестало вообще...