More Related Content Similar to Scala kansai summit-2016 (20) Scala kansai summit-201610. f(x) = x + 1
Scala
• = ( )
•
Which
is
better?
def f(x: Int) {x + 1}
def f(x: Int) = x + 1
def f(x: Int) = return x + 1
※ : 2
13. ?
int sum = 0;
for (int i = 0; i < array.length; i++) {
sum += array[i];
}
return sum;
19. • 1 n
•
int f(int n) {
int total = 0;
for (int i = 1; i <= n; i++) {
total += i;
}
return total;
}
20. f(1) = 1
f(2) = 1 + 2
f(3) = 1 + 2 + 3
...
f(n) = 1 + 2 + 3 + ... + n
21. f(1) = 1
f(2) = f(1) + 2
f(3) = f(2) + 3
...
f(n) = f(n - 1) + n
f(1) = 1
f(n) = f(n - 1) + n
22. def f(n: Int): Int =
if (n == 1) 1
else f(n - 1) + n
f(1) = 1
f(n) = f(n - 1) + n
24. f(0) = 1
f(1) = 1
f(2) = 2 * 1
f(3) = 3 * 2 * 1
...
f(n) = n * ... * 3 * 2 * 1
25. f(0) = 1
f(1) = 1 * f(0)
f(2) = 2 * f(1)
f(3) = 3 * f(2)
...
f(n) = n * f(n - 1)
26. f(0) = 1
f(n) = n * f(n - 1)
def f(n: Int): Int =
if (n == 0) 1
else n * f(n - 1)
28. f(0) = 1
f(1) = 1
f(2) = 1 + 1
f(3) = 1 + 2
f(4) = 2 + 3
f(5) = 3 + 5
...
29. f(0) = 1
f(1) = 1
f(2) = f(0) + f(1)
f(3) = f(1) + f(2)
f(4) = f(2) + f(3)
f(5) = f(3) + f(4)
...
f(n) = f(n - 2) + f(n - 1)
30. f(0) = 1
f(1) = 1
f(n) = f(n - 2) + f(n - 1)
def f(n: Int): Int =
if (n == 0) 1
else if (n == 1) 1
else f(n - 2) + f(n - 1)
34. 5 :: 1 :: 2 :: 8 :: Nil
Nil
Nil::8
8 :: Nil::2
2 :: 8 :: Nil::1
1 :: 2 :: 8 :: Nil::5
35. sum(5 :: 1 :: 2 :: 8 :: Nil)
sum( ) = 0
sum( ) = 8 + 0
sum( ) = 2 + 8 + 0
sum( ) = 1 + 2 + 8 + 0
sum( ) = 5 + 1 + 2 + 8 + 0
Nil::8
Nil
8 :: Nil::2
2 :: 8 :: Nil::1
1 :: 2 :: 8 :: Nil::5
36. sum( ) = 0
sum( ) = + sum( )
sum( ) = + sum( )
sum( ) = + sum( )
sum( )
= + sum( )
Nil::8
Nil
8 :: Nil::2
2 :: 8 :: Nil::1
1 :: 2 :: 8 :: Nil::5
Nil8
8 :: Nil2
2 :: 8 :: Nil1
5 1 :: 2 :: 8 :: Nil
37. sum( ) = 0
sum( ) = + sum( )
sum( ) = + sum( )
sum( ) = + sum( )
Nil::8
Nil
8 :: Nil::2
2 :: 8 :: Nil::1
Nil8
8 :: Nil2
2 :: 8 :: Nil1
head tail
head tail
head tail
head tail head :: tail
38. sum(Nil) = 0
sum(head :: tail) = head + sum(tail)
def sum(list: List[Int]): Int =
if (list.isEmpty) 0
else list.head + sum(list.tail)
def sum(list: List[Int]): Int = list match {
case Nil => 0
case head :: tail => head + sum(tail)
}
39. def sum(list: List[Int]): Int = list match {
case Nil => 0
case head :: tail => head + sum(tail)
}
def sum(list: List[Int]): Int = {
def loop(acc: Int, l: List[Int]): Int = l match {
case Nil => acc
case head :: tail => loop(acc + head, tail)
}
loop(0, list)
}
45. • Functional Programming Principles in Scala
Scala Martin Odersky
https://www.coursera.org/course/progfun
•
OCaml
http://www.amazon.co.jp/dp/4781911609
46. • Scala & ―
Scalaz
2
http://www.amazon.co.jp/dp/4844337769