p4 Flashcards
Šta je popratni efekt?
Popratni efekt je sve što funkcija proizvede, a nije povratna vrijednost. Na primjer, iznimka, alokacija na heapu itd.
Kakva je tu čista funkcija?
Funkcija koja ne radi ništa drugo osim što proizvodi povratnu vrijednost nazivamo čistom funkcijom.
Kakva je parcijalna funkcija?
Parcijalna funkcija je funkcija koja za određene inpute ne može da proizvede output. To nema veze sa čistoćom funkcije. Funkcija može biti čista i parcijalna u isto vrijeme.
Kako se apliciraju sve funkcije?
Sve funkcije se apliciraju isključivo na jednu vrijednost odgovarajućeg tipa T1 i vraćaju tačno jednu vrijednost odgovarajućeg tipa T2.
Ukoliko funkcija u F# programskom jeziku postoji isključivo zbog popratnih efekata, kako će to prikazivati?
Da je funkcija napravljena isključivo zbog popratnih efekata može se primijetiti na osnovu tipa Unit, koji se koristi na mjestu tipa za parametar ili na mjestu povratnog tipa.
Kada se uzima unit, a kada vraća unit?
Ukoliko funkcija uzima unit, a vraća nešto drugo, ta funkcija će proizvesti vrijednost striktno na osnovu popratnih efekata i nju vraćati. Međutim, ukoliko ta funkcija vraća unit, ona samo proizvodi popratni efekt od vrijednosti koja je ulaz u tu funkciju.
Zašto se koristi tip unit za naznačavanje popratnih efekata u funkcijama u F# programskom jeziku?
Tip unit se koristi zato što ne postoji funkcija u F# koja ne vraća ništa. U F# programskom jeziku svaka funkcija mora nešto da vrati, stoga funkcije koje rade popratne efekte ili vraćaju ili uzimaju unit.
Da li funkcije koje rade popratne efekte moraju da uzimaju ili vraćaju unit?
Ne. Funkcije u F# programskom jeziku mogu praviti popratne efekte čak i ako ne uzimaju ili ne vraćaju unit.
Da li je moguće imati simbol koji sadrži prazno mjesto u F#?
Da. Tu se postiže backtickom.
Koja je funkcija u F# koja generiše nasumične cijele brojeve?
Random().Next(broj).
Šta je funkcija višeg reda?
Funkcija višeg reda pri aplikaciji prihvata ili vraća vrijednosti koje su također funkcije. Dosta je da to bude ili prihvata funkciju ili vraća funkciju, ne mora biti oba istovremeno.
Koju asociaciju ima operator strelica, a koju asociaciju i prioritet ima aplikacija?
Operator strelica je desnoasocijativan, a aplikacija je lijevoasocijativna i ima najviši prioritet.
Šta je closure?
Closure je funkcija koja tokom aplikacije koristi simbol koji se zavezao za vrijednost ne tokom aplikacije, već tokom definicije funkcije.
Šta je Currying?
Currying je tehnika kojom se po definiciji funkcija koja izgleda kao da uzima više parametara transformiše u sekvencu funkcija višeg reda, koje uzimaju i vraćaju po jednu vrijednost.
Da li Currying omogućava samo jedan poziv funkcije umjesto više njih?
Koliko aplikacija u pitanju, toliko je i poziva u pitanju. Tako da se vrši veći broj poziva bez obzira na carried funkciju. Vrši se onoliko poziva koliko je aplikacija.