Farklılar.
Birinci sınıf işlevler
Bir dilde aynı şekilde işlenen değerler "birinci sınıf" olarak adlandırılır. Veri yapılarında depolanabilir, bağımsız değişken olarak iletilebilir veya kontrol yapılarında kullanılabilirler.
Değerleri işlev türleriyle destekleyen ve bunları işlev dışı değerlerle aynı şekilde ele alan dillerin "birinci sınıf işlevlere" sahip olduğu söylenebilir.
Daha yüksek dereceli fonksiyonlar
Birinci sınıf işlevlere sahip olmanın sonuçlarından biri, bir işlevi başka bir işleve argüman olarak iletebilmeniz gerektiğidir. İkinci işlev artık "üst düzey" dir. Bağımsız değişken olarak bir işlevi alan bir işlevdir.
Kanonik örnek "harita" dır
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
Yani, bir işlevi ve bir diziyi alır ve her öğeye uygulanan işlevle yeni bir dizi döndürür.
İşlevsel diller - işlevlerin program oluşturmanın birincil aracı olduğu diller - tümünün birinci sınıf işlevleri vardır. Çoğunun daha yüksek düzey işlevleri de vardır (çok nadir istisnalar Excel gibi dillerdir, bu dillerin işlevsel olduğu söylenebilir, ancak üst düzey değildir).