Есть разница. Когда вы говорите, что в языке есть функции первого класса, это означает, что язык рассматривает функции как значения - что вы можете назначить функцию переменной, передать ее и т. Д. Функции более высокого порядка - это функции, которые работают с другими функциями, то есть что они принимают одну или несколько функций в качестве аргумента, а также могут возвращать функцию.
Концепция «высшего порядка» может применяться к функциям в целом, подобно функциям в математическом смысле. Концепция «первоклассного» касается только функций в языках программирования. Он редко используется при обращении к функции, такой как «первоклассная функция». Гораздо чаще говорят, что «язык имеет / не имеет первоклассной поддержки функций».
Эти две вещи тесно связаны, так как трудно представить язык с функциями первого класса, который не поддерживал бы также функции высшего порядка, и, наоборот, язык с функциями высшего порядка, но без поддержки функций первого класса.
int
илиchar
, в том смысле, что они не могут быть явно определены (телом функции) в любом месте.Функции первого класса - это функции, которые обрабатываются как объект (или могут быть присвоены переменной).
Функции высшего порядка - это функции, которые принимают как минимум одну функцию первого класса в качестве параметра или возвращают как минимум одну функцию первого класса.
источник
Они разные.
Функции первого класса
Значения в языке, которые обрабатываются единообразно повсюду, называются «первоклассными». Они могут храниться в структурах данных, передаваться как аргументы или использоваться в структурах управления.
Можно сказать, что языки, которые поддерживают значения с функциональными типами и обрабатывают их так же, как нефункциональные значения, имеют «функции первого класса».
Функции высшего порядка
Одним из последствий наличия функций первого класса является то, что вы должны иметь возможность передавать функцию в качестве аргумента другой функции. Последняя функция теперь «высшего порядка». Это функция, которая принимает функцию в качестве аргумента.
Канонический пример - «карта».
То есть он принимает функцию и массив и возвращает новый массив с функцией, примененной к каждому элементу.
Функциональные языки - языки, в которых функции являются основным средством создания программ - все имеют функции первого класса. Большинство из них также имеют функции более высокого порядка (очень редкими исключениями являются такие языки, как Excel, который можно назвать функциональным, но не более высокого порядка).
источник
В дополнение к предыдущим ответам обратите внимание, что язык с функциями первого класса автоматически разрешает выражение функций высшего порядка (потому что вы можете передавать функции в качестве параметров, как и любое другое значение).
С другой стороны, вы можете представить языки, которые поддерживают функции высшего порядка, но не делают функции первоклассными (и где параметры, которые являются функциями, обрабатываются особым образом и отличаются от «обычных» параметров значений).
Таким образом, наличие функций первого класса (как особенности языка) подразумевает наличие функций высшего порядка, но не наоборот.
источник
Функции Первого класса могут:
Функция высокого порядка - это функция, которая возвращает другую функцию.
Например:
источник
Функции первого класса означают все, что вы можете делать с другими типами (переменные, логические значения, числа ...), вы можете делать это с помощью функций.
Например, назначьте их переменным, передайте, создавайте на лету.
источник