Caracteristica definitorie a limbaje de programare funcționale este de a îmbunătăți funcțiile statului la prima clasă. Cu ajutorul funcției, puteți efectua aceiași pași ca și cu valorile altor tipuri încorporate, cu o cantitate comparabilă de efort.
Mai jos sunt întrebări reprezentative pentru a evalua starea de prima clasa.
Pot atașa ID-ul la valoarea? Dacă da, poți să-l nume?
Este posibil pentru a stoca o valoare într-o structură de date, cum ar fi o listă?
Este posibil să treacă o valoare ca un argument pentru un apel de funcție?
Pot să returneze o valoare ca valoarea apelului funcției?
Ultimele două chestiuni de evaluare definesc ceea ce este cunoscut sub numele de operațiune de ordin superior, sau funcții de ordin superior. Funcții de ordin superior iau funcții ca argumente și să se întoarcă funcționează ca valoarea apelului funcției. Aceste operații se bazează pe programarea funcțională în funcție de compararea și combinarea funcțiilor.
Dacă funcția este valoarea primei clase ar trebui să fie capabil să-l numească la fel ca întreg, șir, și alte tipuri de valori. În literatura de specialitate despre programare funcțională se numește un ID de legare la valoarea. F # folosește o expresie let pentru a lega nume valori: lasa
Valoarea primei clase poate fi stocată în structura de date. Următoarele sunt exemple de cod care indică valorile de stocare în liste și tupluri.
Pentru a se asigura că numele funcției stocate în tuplul realizează de fapt, funcții de calcul, următorul exemplu operatorii FST și snd folosit pentru a extrage primul și al doilea element al funAndArgTuple tuplu. Primul element din tuplul se numește squareIt. al doilea - num. num Id în exemplul anterior este legat la un număr întreg de 10, care este un argument valabil pentru funcția squareIt. In al doilea element tuple expresie aplicat mai întâi al doilea: num squareIt.