początkową jako pierwszy element listy; curry (fun, arg1, arg2, ...) – zwraca nową funkcję która przyjmuje początkowe wartości przekazane jako argumenty. rcurry (fun, arg1, arg2, ...) – działa tak jak curry tylko argumenty są zamienione
Przykłady SML fun kwadrat x = x*x; (* funkcja podnosząca do kwadratu *)
val L = '''map''' kwadrat [1,2,3,4,5]; (* L = [1,4,9,16,25] *)
fun niezerowe x = x <> 0; (* funkcja zwraca prawdę gdy x nie jest zerem *)
val L = '''filter''' niezerowe [0,1,0,0,5,0,0,0]; (* L = [1,5] *)
fun suma (x, y) = x+y; (* funkcja zwraca sumę dwóch liczb *) fun iloczyn (x, y) = x*y; (* ta natomiast iloczyn *)
val S = '''foldl''' suma 0 [1,2,3,4,5]; (* S = 0+1+2+3+4+5 = 15 *) val I = '''foldl''' iloczyn 1 [1,2,3,4,5]; (* I = 1*1*2*3*4*5 = 120 *)
Funkcje wyższego rzędu mogą również zwracać inne funkcje, co jest wykorzystywane m.in. w curryingu, czyli transformacji funkcji w taki sposób, żeby zamiast przyjmowania ciągu argumentów (krotki), przyjmowała tylko jeden, pierwszy argument, oraz zwracała funkcję przyjmującą kolejne argumenty. Np.