Что отличает функция First-class от функции Anonymous?

Я видел две концепции

Кажется, что эти две концепции одинаковы? (Лямбда)

Я смущен?

2 ответа

Функция первого класса - это то, что подтверждается - т.е. ее можно манипулировать как часть языка, ее можно передать другим функциям, быть значением переменной.

Анонимная функция - это просто имя, которое не имеет имени (или не имеет имени функции, если функции и переменные занимают отдельные пространства имен).

Было бы сложно создать язык с анонимными, не первоклассными функциями, но эти две концепции достаточно различны, что вы, по крайней мере, могли бы быть отсортированы. В равной степени вы определенно можете иметь язык с функциями первого класса, но не анонимные функции. Эти языки редки, потому что в такой конструкции мало смысла.


Марцин имеет правильный ответ. Чтобы привести несколько примеров: C и С# 1.0 имеют первоклассные функции, но не имеют анонимных функций. В обоих случаях вы можете явно объявлять именованные функции, но как только вы это сделаете, вы можете получить ссылки на них и сохранить их в переменных.

licensed under cc by-sa 3.0 with attribution.