Чем отличается функция первого класса от анонимной функции?
Я видел две концепции
Кажется, что эти два понятия одинаковы? (Лямбда)
Я не совсем понимаю?
2 ответа
Первоклассная функция - это функция, которая усовершенствована - то есть она может управляться как часть языка, может передаваться другим функциям, быть значением переменной.
Анонимная функция - это та, которая не имеет имени (или не имеет имени "функции", если функции и переменные занимают отдельные пространства имен).
Было бы довольно сложно разработать язык с анонимными функциями, не относящимися к первому классу, но эти два понятия достаточно различны, чтобы вы, по крайней мере, могли это сделать. Точно так же у вас определенно может быть язык с функциями первого класса, но без анонимных функций. Эти языки редки, потому что нет смысла в таком дизайне.
Марцин имеет правильный ответ. Чтобы привести несколько примеров: C и C# 1.0 оба имеют первоклассные функции, но не имеют анонимных функций. В обоих случаях вы можете только явно объявить именованные функции, но как только вы это сделаете, вы можете получить ссылки на них и сохранить их в переменных.