Chúng khác nhau.
Chức năng hạng nhất
Các giá trị trong một ngôn ngữ được xử lý thống nhất trong suốt được gọi là "hạng nhất". Chúng có thể được lưu trữ trong các cấu trúc dữ liệu, được truyền dưới dạng đối số hoặc được sử dụng trong các cấu trúc điều khiển.
Các ngôn ngữ hỗ trợ các giá trị với các loại hàm và coi chúng giống như các giá trị phi hàm, có thể nói là có "các hàm hạng nhất".
Chức năng bậc cao
Một trong những hậu quả của việc có các hàm hạng nhất là bạn sẽ có thể truyền một hàm làm đối số cho một hàm khác. Hàm thứ hai bây giờ là "bậc cao hơn". Nó là một hàm lấy một hàm làm đối số.
Ví dụ kinh điển là "bản đồ"
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
Đó là, nó lấy một hàm và một mảng và trả về một mảng mới với hàm được áp dụng cho mỗi phần tử.
Ngôn ngữ chức năng - ngôn ngữ nơi chức năng là phương tiện chính để xây dựng chương trình - tất cả đều có chức năng hạng nhất. Hầu hết cũng có các hàm bậc cao hơn (ngoại lệ rất hiếm là các ngôn ngữ như Excel, có thể nói là hàm, nhưng không phải là bậc cao hơn).