Funcții în programarea funcțională
32 Questions
2 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Care este rezultatul aplicării funcției combC cu argumentele (-) 1 și 9?

  • 18
  • -18
  • -8
  • 8 (correct)

Ce reprezintă un combinator în programarea funcțională?

  • O funcție cu variabile libere
  • O funcție care returnează o altă funcție
  • O funcție fără variabile libere (correct)
  • O funcție care acceptă doar un singur argument

Cum se calculează nota corespunzătoare în țara C1 folosind funcția scaleMark?

  • mi1 + (m - mi2) / (ma2 - mi1) * (ma1 - mi1)
  • mi1 + (m - mi2) / (ma2 - ma1) * (ma1 - mi1)
  • mi1 + (m - mi2) / (ma2 - mi2) * (ma1 - mi1) (correct)
  • mi2 + (m - ma2) / (mi1 - ma2) * (ma2 - mi1)

Ce caracteristică au funcțiile scrise în stil point-free?

<p>Parametrii sunt ascunși (B)</p> Signup and view all the answers

Ce face K combinatorul în programarea funcțională?

<p>Creează o funcție constantă (D)</p> Signup and view all the answers

Care este rezultatul funcției mynewsum când aplicăm la 5 și 7?

<p>12 (A)</p> Signup and view all the answers

Ce reprezintă mix5 în contextul dat?

<p>O funcție care amestecă argumentele într-o altă ordine (B)</p> Signup and view all the answers

Care metodă este folosită pentru a aplica recursiv o funcție în programarea funcțională?

<p>Recursie (D)</p> Signup and view all the answers

Ce funcție este folosită pentru a colecta atomii pozitivi dintr-o formulă?

<p>getpos (D)</p> Signup and view all the answers

Care dintre următoarele opțiuni descrie corect o funcție de ordin superior?

<p>Primește funcții ca argumente (A)</p> Signup and view all the answers

Ce se verifică în funcția istaut?

<p>Dacă o formulă este tautologie (B)</p> Signup and view all the answers

Care este rolul funcției getneg?

<p>Colectează atomii negativi (D)</p> Signup and view all the answers

Ce reprezintă erorile în evaluarea formulelor?

<p>Evaluarea se va opri și va provoca o eroare (B)</p> Signup and view all the answers

Ce fac constructorii în contextul structurilor heterogene?

<p>Ajută la manipularea structurilor diverse (A)</p> Signup and view all the answers

Ce operație se utilizează pentru a combina două funcții?

<p>(.) (B)</p> Signup and view all the answers

Care dintre următoarele este un avantaj al funcțiilor de ordin superior?

<p>Îmbunătățirea expresivității și reutilizării (C)</p> Signup and view all the answers

Ce măsoară entropia încrucișată H(t, p)?

<p>Diferența dintre două distribuții de probabilitate (B)</p> Signup and view all the answers

Ce este caracteristic evaluării call-by-value?

<p>Se evaluează argumentul înainte de a fi utilizat. (D)</p> Signup and view all the answers

Care este rezultatul apelului zeroit(sq(sq(sq(2))))?

<p>0 (A)</p> Signup and view all the answers

Ce înseamnă call-by-name?

<p>Argumentul este evaluat la fiecare apariție. (C)</p> Signup and view all the answers

Ce este un tip de egalitate în programarea funcțională?

<p>Un tip care are un predicat de egalitate definit. (A)</p> Signup and view all the answers

Ce tip de date este utilizat în funcția 'myelem' pentru a verifica dacă un element se află într-o listă?

<p>Tip de egalitate. (D)</p> Signup and view all the answers

Cum este definită un tip nou în Haskell folosind enumerările?

<p>Prin declarația 'data' și constructori. (C)</p> Signup and view all the answers

Care este rezultatul apelului funcției mysortins [3,1,2,1,4] ( extbackslash x y -> x >= y)?

<p>[4,3,2,1,1] (A)</p> Signup and view all the answers

Ce se întâmplă când se apelează processWage [ extbackslash w -> w - 25.00, extbackslash w -> 0.65 * w, extbackslash w -> 0.90 * w] 1025.00?

<p>585.0 (D)</p> Signup and view all the answers

Care dintre următoarele funcții este considerată egală extensional cu i1 x = x + x?

<p>i2 x = x * 2 (B)</p> Signup and view all the answers

Ce înseamnă că două funcții sunt egale în sens extensional?

<p>Produc aceleași rezultate pentru argumente identice. (A)</p> Signup and view all the answers

Care este rolul argumentului orel în funcția mysortins?

<p>Definirea criteriului de sortare. (A)</p> Signup and view all the answers

Ce se întâmplă cu i3 după revizuirea lui i1 = x + x + 1?

<p>Devine identică cu <code>i1</code>. (B)</p> Signup and view all the answers

Cum este definită compunerea funcțională?

<p>Aplicarea unui funcții pe rezultatul altei funcții. (C)</p> Signup and view all the answers

Ce produce funcția myinser când este apelată cu myinser 4 [] orel?

<p>[4] (C)</p> Signup and view all the answers

Signup and view all the answers

Flashcards

String

Un tip de date reprezentând o secvență de caractere, cum ar fi "Salut!"

Polimorfism

O funcție care poate opera pe diferite tipuri de date, fără a defini explicit tipul lor.

Tip enumerat (enum)

Un tip de date care definește un set de valori discrete sau valori care pot fi enumerate (ex: Ziua săptămânii: Luni, Marți, Miercuri...).

Operator mod (% în majoritatea limbajelor)

Un operator care returnează restul diviziunii a două numere.

Signup and view all the flashcards

Tip Maybe

Un tip de date care are două opțiuni posibile: un valor prezentă sau o valoare absentă.

Signup and view all the flashcards

Tip de date definit de utilizator

Un tip de date care permite crearea de noi tipuri de date, prin combinarea tipurilor existente.

Signup and view all the flashcards

Tip produs

Un tip de date care combină mai multe tipuri de date: un tip este un set de combinații ale altor tipuri (ex: (Int, String) este un tip de date care combină numere întregi și șiruri de caractere).

Signup and view all the flashcards

Tip sumă (tip enumerat)

Un tip de date care permite definirea unui set de alternative sau opțiuni potențiale. Exemple: Gender(M sau F), Maybe (Nothing sau Just).

Signup and view all the flashcards

Combinator

O funcție care nu are variabile libere.

Signup and view all the flashcards

Combinatorul K

O funcție care acceptă un argument și returnează o constantă.

Signup and view all the flashcards

Combinatorul C

O funcție care interschimbă primele două argumente ale unei alte funcții

Signup and view all the flashcards

Decrement cu 1

O funcție care ia un argument și îl scade cu 1.

Signup and view all the flashcards

Stilul Point-Free

Un stil de programare care scrie funcții fără a specifica explitic parametrii.

Signup and view all the flashcards

Convertirea Scalei

O funcție care convertește o notă de la un sistem de notare la altul.

Signup and view all the flashcards

combK

O funcție care creează o funcție constantă

Signup and view all the flashcards

combC

O funcție care interschimbă ordinea primelor 2 argumente ale funcției date ca prim argument

Signup and view all the flashcards

Apel-prin-valoare (call-by-value)

În evaluarea apel-prin-valoare, argumentul este evaluat înainte de a fi trecut la funcție.

Signup and view all the flashcards

Apel-prin-nume (call-by-name)

Evaluarea apel-prin-nume trimite expresia argumentului direct la funcție, fără a o evalua mai întâi.

Signup and view all the flashcards

Apel-prin-nevoie (call-by-need)

Evaluarea apel-prin-nevoie este similară cu cea prin nume, dar evaluează o expresie doar dacă este necesar și o face o singură dată.

Signup and view all the flashcards

Folosirea lui call-by-need

Call-by-need este o strategie de evaluare care poate fi folositoare pentru a evita calculele inutile și buclele infinite.

Signup and view all the flashcards

Haskell este leneș.

În Haskell, call-by-need este folosit, ceea ce face limbajul leneș.

Signup and view all the flashcards

Thunk

Un thunk este o expresie care este evaluată doar la nevoie.

Signup and view all the flashcards

Evitați buclele infinite cu call-by-need.

O buclă infinită poate fi evitată prin folosirea lui call-by-need.

Signup and view all the flashcards

Forțarea evaluării argumentului.

Evaluarea argumentului poate fi forțată cu simbolul $!

Signup and view all the flashcards

Funcții ca date

Proprietățile lor algebrice ajută la raționamentul pe programe.

Signup and view all the flashcards

Exemple de funcții ca date

Funcțiile pot fi transmise ca parametri altor funcții.

Signup and view all the flashcards

Liste de funcții

O listă de funcții poate fi procesată iterativ.

Signup and view all the flashcards

Egalitatea funcțiilor

Două funcții sunt egale extensional dacă ele produc același rezultat pentru aceiași argumente.

Signup and view all the flashcards

Compoziția funcțională

O funcție care compune două funcții, aplicând rezultatul celei din urmă pe primul argument.

Signup and view all the flashcards

Ce este o funcție?

O funcție este o expresie care ia unul sau mai multe argumente și produce o valoare.

Signup and view all the flashcards

Importanța funcțiilor ca date

Funcțiile ca date sunt un concept fundamental în programare.

Signup and view all the flashcards

Ce înseamnă funcții ca date ?

Funcțiile pot fi create, stocate, transmise ca argumente, returnate de alte funcții și aplicate dinamic.

Signup and view all the flashcards

Entropia încrucișată (Cross Entropy)

O măsură a diferenței dintre două distribuții de probabilitate, utilizată în Deep Learning ca funcție de pierdere. Ne spune cât de diferită este distribuția prezisă (p) față de distribuția reală (t).

Signup and view all the flashcards

Calculul entropiei încrucișate - recursie 1

O funcție care calculează entropia încrucișată între două liste de probabilități, utilizând recursie simplă.

Signup and view all the flashcards

Calculul entropiei încrucișate - recursie cu pază

O funcție care calculează entropia încrucișată între două liste de probabilități, utilizând recursie cu pază.

Signup and view all the flashcards

Calculul entropiei încrucișate - potrivire de modele

O funcție care calculează entropia încrucișată între două liste de probabilități, utilizând potrivirea de modele.

Signup and view all the flashcards

Calculul entropiei încrucișate - recursie cu coadă

O funcție care calculează entropia încrucișată între două liste de probabilități, utilizând recursie cu coadă.

Signup and view all the flashcards

Calculul entropiei încrucișate - foldr, map și zip

O funcție care calculează entropia încrucișată între două liste de probabilități, utilizând funcțiile foldr, map și zip.

Signup and view all the flashcards

Calculul entropiei încrucișate - sum, map și zip

O funcție care calculează entropia încrucișată între două liste de probabilități, utilizând funcțiile sum, map și zip.

Signup and view all the flashcards

Calculul entropiei încrucișate - sum, zipWith

O funcție care calculează entropia încrucișată între două liste de probabilități, utilizând funcțiile sum, zipWith..

Signup and view all the flashcards

Funcție de prim ordin

O funcție care are ca argument și ca rezultat date.

Signup and view all the flashcards

Funcție de ordin superior

O funcție care are ca argument sau ca rezultat o altă funcție. Exemple:

  • map: aplică o funcție pe fiecare element dintr-o listă.
  • filter: extrage elementele din listă care satisfac o condiție.
Signup and view all the flashcards

Programare funcțională

O metodă de programare în care funcțiile sunt elemente de primă clasă, pot fi transmise ca parametri, returnate din funcții și atribuite variabilelor.

Signup and view all the flashcards

Compoziția de funcții (.)

O funcție care este compusă din alte funcții. Este folosită pentru a crea o funcție complexă din funcții mai simple.

Signup and view all the flashcards

Funcția map

O funcție care aplică o funcție dată pe fiecare element al unei liste. Exemplu:

  • map (+1) [1,2,3] returnează [2,3,4].
Signup and view all the flashcards

Funcția filter

O funcție care filtrează elementele dintr-o listă, păstrând doar elementele care satisfac o condiție dată. Exemplu:

  • filter even [1,2,3,4] returnează [2,4].
Signup and view all the flashcards

Familia de funcții fold

O familie de funcții care combină elementele unei liste într-un singur rezultat. Exemplu:

  • foldl (+) 0 [1,2,3] returnează 6 (1 + 2 + 3 + 0).
Signup and view all the flashcards

Funcția takeWhile

O funcție care preia o colecție (de exemplu o listă) și extrage elementele dintr-o colecție atâta timp cât o condiție este satisfăcută. Exemplu:

  • takeWhile (<10) [1,2,3,11,12] returnează [1,2,3].
  • takeWhile odd [1,2,3,4] returnează [1].
Signup and view all the flashcards

Study Notes

Introducere în programarea funcțională (FP)

  • Programarea funcțională (FP) este un stil de programare care folosește funcții aplicate la argumente ca blocuri de bază pentru construirea programelor.
  • Argumentele în sine pot fi apeluri de funcție, astfel încât programele complexe sunt construite prin intermediul compoziției funcțiilor.
  • Paradigma funcțională aparține paradigmei de programare declarative: specifică ce face programul, nu cum îl face.
  • Program = Funcție.

Principii ale paradigmei funcționale (pure)

  • Funcțiile sunt "cetățeni de primă clasă" (pot fi transmise ca argumente, returnate de alte funcții, stocate în liste etc.).
  • Funcțiile nu au efecte secundare (sau sunt strict controlate).
  • Funcțiile nu depind de variabile globale.
  • Expresiile (=sunt evaluate la o anumită valoare), nu instrucțiunile (=efectuează o acțiune).
  • Variabilele sunt imutabile: valoarea lor nu se modifică în timp.
  • Nu există "stare a programului".
  • Nu există bucle, doar apeluri recursive.

Limbaje de programare funcțională și implementări

  • Limbaj: Haskell.
  • Implementare: ghc (kit de instrumente software).
  • Alte limbaje: Elm, Erlang, Haskell, F#, Scala, ML, etc.
  • Caracteristici ale limbajelor FP studiate: tipuri puternic, tipuri static (detectate la compilare), inferență de tip (deducție automată).

De ce programare funcțională?

  • Confruntări moderne cu software-ul: creșterea complexității, timpul de dezvoltare ar trebui să scadă, numărul de erori ar trebui să scadă.
  • Soluții oferite de programarea funcțională: permite scrierea unui cod înalt abstract, clar și concis, permite refolosirea codului și prototipizarea rapidă, permite raționamentul despre corectitudinea programului, permite o paralelizare ușoară a codului.
  • Domenii de aplicare a FP: WhatsApp, Cardano, sisteme de blockchain de generația a treia, sisteme anti-spam Facebook etc.

Un pic de istorie

  • Calculul lambda: Teoria lui Alonzo Church din anii 1930 care descrie ce pot fi calculate funcțiile. Este baza a majorității limbajelor funcționale actuale.
  • LISP: primul limbaj al programare funcțională din anii 1950 care permite modificarea variabilelor, (acum există dialecte moderne).
  • ML (Meta Language): limbaj funcțional din anii 1970 care a introdus tipuri polimorfice și inferență de tip.
  • Famila Miranda: Haskell (după Haskell Curry) 1987, pur funcțional, cu evaluare leneșă.
  • Limbaje moderne multi-paradigmă care includ caracteristici FP: Scala, Rust, F#, C#.
  • Obiectivele cursului: Cum să scrii cod funcțional idiomatic și eficient, înțelegerea și folosirea conceptelor de bază ale FP, abordarea calculului lambda.

Structuri de date în Haskell

  • Tipuri de date primitive în Haskell: tipuri de bază, cum ar fi întregi (Int, Integer), float (Float, Double), booleene (Bool), caractere (Char), șiruri (String).
  • Liste în Haskell: liste finite și infinite, operații de bază (head, tail, null, ++, ! !, elem, length).
  • Operații cu liste în Haskell: comprehensiuni de liste, (folosind generatori și clauze), funcții de ordin superior în combinație cu generatori și clauze.
  • Tupluri și înregistrări în Haskell.
  • Tipuri de unioni/enum în Haskell: introducerea de noi tipuri (de exemplu, genuri înregistrări de tipuri), pentru înregistrarea unor structuri de date suplimentare.

Funcții recursive și corecursive

  • Funcție recursivă: o funcție care se apelează pe ea însăși.
  • Funcție corecurivă: generează un șir de valoare bazându-se pe o relație recursivă.
  • Evaluarea prin apel: evaluarea apelurilor funcției, evaluarea în valoare versus evaluare prin nume.
  • Evaluare leneșă: evaluări numai când este necesar.
  • Funcții de ordin superior: aplică o funcție pe elementele unei structuri de date, cum ar fi liste sau arbori.
  • Funcții de fold: oferă o metodă generală pentru a combina elementele unei structuri de date într-o singură valoare.

Monadă

  • Monada este o generalizare a conceptelor aplicabile, permițând manipularea acțiunilor și valorilor înfășurate.
  • Monadă: obiect care oferă funcții pentru a înfășura valori (return) și combina (>>=).
  • Monada Maybe: gestionarea excepțiilor/eșecurilor.
  • Monada IO: manipularea intrărilor și ieșirilor.

Funcții în general

  • Funcții de ordin superior. Aplicații și caracteristici.
  • Compoziția funcției și aplicațiile de funcții.
  • Compoziția funcției și aplicațiile de funcții.
  • Recursivitate recursivă versus corecursivă.
  • Redex. Simplitate.
  • Aplicatii recursie in lambda.

Lambda calcul

  • Lambda calcul: formalism matematic care permite definirea funcțiilor și executarea calculului lor.
  • Tipuri de expresiuni în lambda calcul: variabile, abstractizare, aplicații.
  • Concepte de bază în lambda calcul: conversii, normalizarea, redex.

Introducere în programarea funcțională (FP)

  • Înțelegeți conceptele de bază ale programare funcțională (FP).
  • Înțelegeți elementele de bază ale Lambda Calcul.
  • Aplicați funcții de ordin superior asupra structurilor de date (liste și funcții recursive).
  • Înțelegeți și demonstrați concepte corelative.
  • Construirea expresiilor lambda folosind combinatorii.
  • Aplicarea și utilizarea corecursiunii în contextul definiției listelor și al altor funcții.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Functional Programming PDF

Description

Acest quiz abordează concepte esențiale din programarea funcțională, inclusiv combinatori, funcții specifice și metode de calcul. Vei explora funcții precum combC și scaleMark, precum și caracteristicile stilului point-free. Testează-ți cunoștințele despre aceste noțiuni fundamentale.

More Like This

Functional Programming Report
19 questions

Functional Programming Report

WorthwhilePyrite5473 avatar
WorthwhilePyrite5473
Functional Programming and Comprehensions Quiz
6 questions
Functional Programming Concepts Quiz
8 questions
Use Quizgecko on...
Browser
Browser