Чем отличается функция первого класса от анонимной функции?

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

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

Я не совсем понимаю?

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам