Upcoming SlideShare
×

1,764 views
1,689 views

Published on

Published in: Education, Technology
7 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
Your message goes here
• Be the first to comment

Views
Total views
1,764
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
0
0
Likes
7
Embeds 0
No embeds

No notes for slide
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n
• \n

2. 2.
3. 3. ?
4. 4. 1 public class Counter {23 private int count = 0;45 /**6 * . 7 * @param value 8 * @return 9 */10 public int up(int value) {11 count += value;12 return count;13 }14 }
5. 5. 1 public class Counter {23 private int count = 0;45 /**6 * . 7 * @param value 8 * @return 9 */10 public int up(int value) {11 count += value;12 return count;13 }14 }
6. 6. 1 import java.util.Scanner; 2 3 public class IOSample { 4 5 public static void main(String[] args) { 6 7 Scanner scan = new Scanner(System.in); 8 9 System.out.println(" ");10 String str = scan.next(); //11 System.out.println(" "+ str);12 }13 } ( )
7. 7. 1 import java.util.Scanner; 2 3 public class IOSample { 4 5 public static void main(String[] args) { 6 7 Scanner scan = new Scanner(System.in); 8 9 System.out.println(" ");10 String str = scan.next(); //11 System.out.println(" "+ str);12 }13 } ( )
8. 8. HaskellConcurrent Clean OCaml Erlang Scala Lisp(Scheme) F#
9. 9. Whats faster than C++, more concise than Perl,more regular than Python, more flexible than Ruby,more typeful than C#, more robust than Java,and has absolutely nothing in common with PHP?Its Haskell! -- Autrijus Tang( )C++ PerlPython RubyC# JavaPHPHaskell
10. 10. 1 cond :: Bool 2 cond = True 3 4 price :: Int 5 price = 2800 6 7 pi :: Float 8 pi = 3.141592653589793 910 greeting :: String11 greeting = "Hello, Haskell!"1213 letter :: Char14 letter = C
11. 11. ‘A’ ‘B’ ‘C’ ‘D’1 bools = [True, False, True] :: [Bool]23 -- "ABCD"4 letters = [A, B, C, D] :: [Char]56 --7 empty = [] :: [Int]89 -- 110 notEmpty = [[]] :: [[Float]]
12. 12. 1 --2 (False, A) :: (Bool, Char)34 -- ( )5 ("Name", True, 123) :: (String, Bool, Int)67 -- 8 (a, (False, b)) :: (Char, (Bool, Char)) 910 --11 ([a, b, ‘c’], [False, True]) :: ([Char], [Bool])1213 --14 [(a, False), (b, True)] :: [(Char, Bool)]
13. 13. 1 double :: Int -> Int2 double x = x + x34 add :: (Int, Int) -> Int5 add (x, y) = x + y67 mult :: Int -> Int -> Int -> Int8 mult x y z = x * y * z> double 36> add (1, 7)8> mult 7 8 9504
14. 14. 1 add :: (Int, Int) -> Int 2 add (x, y) = x + y 3 4 -- Int -> (Int -> Int) Haskell 5 add :: Int -> Int -> Int 6 add x y = x + y 1 7 8 mult10 :: Int -> Int -> Int 9 mult10 = mult 101011 mult30 :: Int -> Int12 mult30 = mult 10 3> mult10 3 8240> mult30 5150
15. 15. 1 twice :: (Int -> Int) -> Int -> Int2 twice f x = f (f x)3 Int4 isDigit :: Char -> Bool Int5 isDigit c = c >= 0 && c <= 967 -- map :: (a -> b) -> [a] -> [b]> twice (*2) 312> map (+1) [1, 2, 3, 4][2, 3, 4, 5]> map isDigit [a, 0, b, 9][False, True, False, True]
16. 16. > length [1, 3, 5, 7]4> length [True, False]2> length [length, length, length]3length :: [a] -> Intmap :: (a -> b) -> [a] -> [b]
17. 17. > 1 + 23> (*) 1.1 2.3 -- 1.1 * 2.32.53> 10 `div` 2 -- div 10 25 1 (+) :: Num a => a -> a -> a 2 (*) :: Num a => a -> a -> a 3 negate :: Num a => a -> a 4 abs :: Num a => a -> a
18. 18. 1 -- ( Ord, Show, Read )2 class Eq a where3 (==) :: a -> a -> Bool4 (/=) :: a -> a -> Bool56 -- MyType Eq7 instance Eq MyType where8 (MyType a) == (MyType a) = (a == a)
19. 19. 1 -- [λxy. x+y]2 add x y = x + y3 add = x -> (y -> x + y)4 add = x y -> x + y56 --7 -- const x y = x 8 const :: a -> (b -> a) 9 const x = _ -> x1011 --> map (x -> x * 2 + 1) [1, 3, 5, 7][3, 7, 11, 15]
20. 20. > [x^2 | x <- [1..5]][1,4,9,16,25]> [(x, y) | x <- [1,2,3], y <- [4,5]][(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)]1 --2 factors :: Int -> [Int]3 factors n = [x | x <- [1..n], n `mod` x == 0]4 --5 primes :: Int -> [Int]6 primes n = [x | x <- [2..n], factors x == [1, x]]> factors 100[1,2,4,5,10,20,25,50,100]> primes 50[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]
21. 21. 1 --2 factorial :: Int -> Int3 factorial 0 = 14 factorial n = n * factorial (n - 1)56 --7 product :: Num a => [a] -> a8 product [] = 19 product (n:ns) = n * product ns 1 2 3 4 1:[2,3,4] 4:[]
22. 22. 1 qsort :: Ord a => [a] -> [a]2 qsort [] = []3 qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger4 where5 smaller = [a|a <- xs, a <= x]6 larger = [a|a <- xs, a > x]> qsort [100, 23, 37, 3, 55, 68, 49][3,23,37,49,55,68,100]
23. 23. 1 even :: Int -> Bool even 42 even 0 = True = {even }3 even n = odd (n - 1) odd 34 = {odd }5 odd :: Int -> Bool even 26 odd 0 = False = {even }7 odd n = even (n - 1) odd 1 = {odd }> even 4 even 0True = {even }> odd 4 TrueFalse
24. 24. 1 -- !2 summary :: [Integer] -> Integer3 summary [] = 04 summary (n:ns) = n + summary ns56 -- ( ) 7 summary :: [Integer] -> Integer 8 summary xs = f xs 0 9 where10 f [] sum = sum11 f (y:ys) sum = f ys (y + sum)
25. 25. mult (x, y) = x * y ? > mult (1+2, 2+3) ? mult (1+2, 2+3) mult (1+2, 2+3)= { + } = {mult } mult (3, 2+3) (1+2) * (2+3)= {+ } = { + } mult (3, 5) 3 * (2+3)= {mult } = {+ } 3 * 5 3 * 5= {* } = {* } 15 15
26. 26. inf :: Int inf = 1 + inf fst (0, inf) fst (0, inf)= {inf } = {fst } fst (0, 1+inf) 0= {inf } fst (0, 1+(1+inf))= {inf } fst (0, 1+(1+(1+inf)))= {inf } !!
27. 27. 1 ones :: [Int] 2 ones = 1 : ones 3 4 -- ( ) 5 sieve :: [Int] -> [Int] 6 sieve (p:xs) = p : sieve [x|x <- xs, x `mod` p /= 0] 7 8 primes :: [Int] 9 primes = sieve [2..] head ones = {head ones }> head ones head (1:ones)1 = {head }> take 10 primes 1[2,3,5,7,11,13,17,19,23,29]
28. 28. Mac OS X 10.7.1tarai :: Int -> Int -> Int -> Int 1.8 GHz Intel Core i7tarai x y z 4 GB 1333 MHz DDR3 | x <= y = y | otherwise = tarai (tarai (x-1) y z) > tarai 16 10 0 (tarai (y-1) z x) 16 (tarai (z-1) x y) Haskellprivate int tarai(int x, int y, int z) { :107039ms if (x <= y) { return y; :45,722,185,221 } else { return tarai(tarai(x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)); }} Java