Arviointiperusteet tehtäville 1, 3 ja 4.
Ilmari Vacklin
Tehtävässä on kaksi eri for-silmukan muunnelmaa, joista ensimmäinen on ns. listakomprehensio (for-yield). Ensimmäiseltä riviltä pitää ymmärtää:
1 to 3
ja 1 to 6
tekee. (Loppunumero tulee mukaan.)lista
on (vakio).Toiselta riviltä pitää ymmärtää:
Tehtävässä piti Curry-muuntaa seuraava lause:
def f(n: String, i: Int) { println(n + ": " + i) }
Tarkoituksena oli saada jotain tälläistä:
def g(n: String)(i: Int) { println(n + ": " + i) }
tai
def g(n: String) = (i: Int) => println(n + ": " + i)
tai jopa
def g = (n: String) => (i: Int) => println(n + ": " + i)
Ensimmäinen vaihtoehto on se idiomaattisin, ja onkin vain syntaksisokeria alempana oleville.
Pisteitä sai seuraavanlaisesti:
g("foo")(42)
.def h = g("foo") _
._
:n käyttöä ei tarvitse huomata.Tehtävässä kysyttiin, mitä ovat rikkaat ja ohuet rajapinnat, ja mitä työkaluja Scala tarjoaa rikkaiden rajapintojen ohjelmointiin. Tehtävässä pyydettiin esimerkkejä ohjelmahahmotelmina sekä Scalan valmiista kalustosta.
Iterable
tai Ordered
.