Functional Flashcards

1
Q

Was ist ein infix Methodenaufruf?

A

val people: Array[Person] people partition (_.age < 18)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was bedeutet Immutability in Functional Style?

A
  • val statt var (unveränderlich)
  • copy() um State zu verändern (Case Class)
  • state im Constructor halten
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was bedeutet Funktionen sind Objekte in Functional Style?

A
  • Funktionen als Parameter: def fun(p: (A) => Boolean)
    Generic A muss in Boolean auflösen (map.filter() ist eine Funktion die das Prinzip nutzt)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was bedeutet Expressions statt Statements in Functional Style?

A
  • val a: array.map().filter()
  • nicht: for (i in array) {...}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie lässt sich numbers.foreach((x: Int) => print(x)) vereinfachen?

A

numbers foreach print

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist eine Higher Order Funktion?

A
  1. def f(x: Int) = x + 1
  2. numbers.foreach(x => f(x)) wird zu numbers foreach f
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Beispiel Verkettung von Higher Order Funktionen

A

List(-10, -5, 0, 5, 10) .filter(_ > 0) .map(x => x * x) .sortWith(_ > _) .foreach(println)

Resultat: 100, 25

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Beispiel für Imperative Style VS Functional Style

A

Functional (übersichtlicher): (1 to 1000000).foldLeft(0)(_ + _)

Imperative (performanter): var x = 1 var sum = 0 while (x <= 1000000) { sum += x x += 1 }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was macht Imperative Style aus?

A
  • For loops
  • Funktionen als Parameter
  • Mutable State
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was macht Functional Style aus?

A
  • Rekursion
  • Immutable State (in Model Layer)
  • Keine getter/setter
  • Kein Null oder null, stattdessen Option
  • Kein global state
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist ein Closure?

A
  • Eine Funktion deren Rückgabewert von Variablen ausserhalb der Funktion abhängt
  • Funktionswert eines “open term” (Funktion mit freien Variablen)
  • Benutzt von sort, fold, reduce

Anonyme Funktion: val multiplier = (i:Int) => i * 10

Closure Funktion:

var factor = 3
val multiplier = (i:Int) => i * factor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist Currying?

A

Umwandlung von Funktion mit mehreren Argumenten in Funktionssequenz mit jeweils einem Argument

def f3(c: Int) = (x: Int) => x + c

f3(1)(5) ==> 6

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist eine Partially Applied Function?

A

Eine Curried (Currying) Funktion der nicht die volle Parameter Sequenz übergeben wurde. Und dessen Ergebnisfunktion wir erneut verwenden.

def f4 = f3(10)

f4(5) ==> 15

How well did you know this?
1
Not at all
2
3
4
5
Perfectly