Junior — Middle
Kas saaksite selgitada funktsionaalse programmeerimise põhimõtete ja lähenemisviiside aluseid?
sobes.tech AI
Vastus AI-lt
Funktsionaalne programmeerimine (FP) on programmeerimisparadigma, mis põhineb funktsioonide kasutamisel kui peamistel ehitusplokkidel ning seisundi muutmise ja kõrvaltoimete vältimisel.
FP põhiprintsiibid ja lähenemised:
- Puhas funktsioonid: funktsioon tagastab alati sama tulemuse sama sisendandmete korral ning ei muuda välist seisundit.
- Muutumatuse (immutability) põhimõte: andmed ei muutu pärast loomist, selle asemel luuakse uued koopiad muudatustega.
- Funktsioonid kõrgemal tasemel: funktsioonid, mis võtavad teisi funktsioone argumentidena või tagastavad neid.
- Rekursioon tsüklite asemel: sageli kasutatakse rekursiooni operatsioonide kordamiseks.
- Kõrvaltoimete puudumine: funktsioonid ei tohiks muuta väliseid muutujaid, faile, andmebaase jms.
Näide C++-s (lambda-funktsioonide kasutamine):
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbrid = {1, 2, 3, 4, 5};
// Funktsioon kõrgemal tasemel: lambda üleandmine std::for_each-ile
std::for_each(numbrid.begin(), numbrid.end(), [](int n) {
std::cout << n * 2 << " ";
});
return 0;
}
Siin me ei muuda algset vektorit, vaid rakendame lihtsalt funktsiooni iga elemendi jaoks, mis vastab funktsionaalse lähenemise ideedele.