Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 sügis
  3. Funktsionaalprogrammeerimine (LTAT.03.019)
EN
Logi sisse

Funktsionaalprogrammeerimine 2024/25 sügis

  • Üldinfo
    • Õppekorraldus
  • Kursus
    • KKK
    • Installimine
    • Kodutöö 1
    • Kodutöö 2
    • Kodutöö 3
    • Kodutöö 4
    • Kodutöö 5
    • Kodutöö 6
    • Kodutöö 7
    • Kodutöö 8
    • Kodutöö 9
    • Kodutöö 10
    • Kodutöö 11
    • Kodutöö 12
    • Kodutöö 13
    • Kodutöö 14
  • Konspekt
    • Baasväärtused ja tüübid
    • 𝜆-arvutus
    • Kõrgemat järku funktsioonid
    • Interaktiivne programmeerimine
    • Uute tüüpide loomine
    • Liidesed
    • Sisend-Väljund
    • Laiskus
    • Lihtsalt tüübitud 𝜆-arvutus
    • Tüübituletus
    • Sõltuvad tüübid
    • Tõestamine Idrises
    • Kvantitatiivne tüübiteooria
  • Moodle
  • Zulip (sisselogides näed linki)

Aritmeetilised jadad ja Listikomprehensioon

Aritmeetilised jadad

[m..n] on list [{$m, m + 1, \ldots, n$}] või vastavalt [{$m, m - 1, \ldots, n$}]

Näiteks:

  [2..5]==[2,3,4,5] 
  [3..1]==[3, 2, 1]

Sisemiselt on see lahendatud Range liidese funktsiooniga rangeFromTo s.t. töötab ka muude tüüpide puhul.

Näiteks:

  ['a'..'g'] == ['a', 'b', 'c', 'd', 'e', 'f', 'g']

[m,n..p] on sisuliselt list [{$m, m + (n-m); m + 2(n-m),\ldots , q$}] kus {$q <= p$}

Näiteks:

  [3,5..15]==[3, 5, 7, 9, 11, 13, 15]

Sisemiselt on see lahendatud Range liidese funktsiooniga rangeFromThenTo s.t. töötab ka muude tüüpide puhul.

Pane tähele, et töötab ka kahanevate väärtustega.

Näiteks:

  ['z', 'x'..'q']==['z', 'x', 'v', 't', 'r']

Listikomprehensioon

Süntaks: [e | {$q_1$}, {$q_2$}, {$\ldots$}, {$q_n$} ]

{$e$} on avaldis ja {$q_i$} võib olla

  • generaator, kujul {$x \leftarrow l$}, kus {$x$} on muutuja ja {$l$} list,
  • let, kujul {$\textsf{let }x = e'$}, kus {$x$} on muutuja ja {$e$} avaldis, või
  • valvur, kujul {$e'$}, kus {$e'$} on Bool tüüpi avaldis.

Avaldis {$e$} võib kasutada "paremal" defineeritud muutujaid, {$q_i$}-d võivad kasutada "vasakul" defineeritud muutujaid.

Näiteks:

  [ x*x | x<-[1..10] ] == [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  [ x*x | x<-[1..10], mod x 3 == 0] == [9, 36, 81]
  [ m | x<-[1..10], let m = x*x, m < 50] == [1, 4, 9, 16, 25, 36, 49]
  [ (a,b) | a<-[1..2],b<-[1..3] ] == [(1,1),(1,2),(1,3),(2,1),(2,2),(2,3)]
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused