Predmet poučuje koncept in uporabo paradigme funkcijskega programiranja, skozi katero se dotika teorije programskih jezikov in poglobljenega razumevanja njihovih lastnosti. Poglavja pri predmetu vsebujejo:
-
Uvod v funkcijsko programiranje.
-
Pojem okolja, leksikalnega in semantičnega dosega.
-
Osnove funkcijskega jezika Standard ML (sintaksa, semantika, enostavni in sestavljeni podatkovni tipi, opcije, lastni tipi) in osvajanje naslednjih pojmov:
-
ujemanje vzorcev,
-
funkcije višjega reda, currying,
-
delo z moduli.
-
-
Osnove funkcijskega jezika Racket in osvajanje naslednjih pojmov:
-
takojšnja in lena evalvacija,
-
tokovi,
-
zakasnitev in sprožitev,
-
gradnja podatkovnih tipov,
-
funkcije z dinamičnim številom argumentov,
-
izdelava interpreterja.
-
-
Primerjava funkcijskega in objektno usmerjega programiranja.
-
Vrste tipiziranj (statično/dinamično, močno/šibko, implicitno/eksplicitno) in trdnost/polnost sistema tipov.