Your SlideShare is downloading. ×
0
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Haskell beginning ru
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Haskell beginning ru

892

Published on

Презентация с семинара по Хаскелю для начинающих

Презентация с семинара по Хаскелю для начинающих

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
892
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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
  • Transcript

    • 1. HaskellИ н с т р у к ц и я п оп р и г о т о в л е н и ю « Д о к а з а т е л ь с т в о - э т о п р о г р а м м а , а д о к а з ы в а е м а я ф о р м у л а - э т о т и п п р о г р а м м ы » Х . К а р р и
    • 2. Что такое функциональное программирование?http://ru.wikipedia.org/wiki/Функциональное_программирование
    • 3. HaskellФункциональныйС поддержкой отложенных вычисленийТипизация строгая, статическая
    • 4. Где взять?http://hackage.haskell.org/platform/
    • 5. Hello world?main = putStrLn "hello, world" 
    • 6. Compileghc --make hello.hs
    • 7. Haskell Console ghci
    • 8. Алгебраghci> 2 + 15  17  ghci> 49 * 100  4900  ghci> 1892 - 1472  420  ghci> 5 / 2  2.5  ghci> 50 * 100 - 4999  1  ghci> 50 * (100 - 4999)  -244950  
    • 9. Логические операции ghci> 5 == 5  ghci> True && False True  False ghci> 1 == 0  ghci> True && True False  True ghci> 5 /= 5  ghci> False || True False  True ghci> 5 /= 4  ghci> not False   False  True ghci> "hello" == "hello" True
    • 10. Syntactic sugarghci> succ 8  9ghci> min 3.4 3.2  3.2  ghci> max 100 101  101 ghci> succ 9 + max 5 4 + 1  16  ghci> ( succ 9 ) + ( max 5 4 ) + 1  16  ghci> div 92 109ghci> 92 `div` 109
    • 11. Baby functionbaby.hs
    • 12. Baby functionbaby.hsdoubleMe x = x + x  
    • 13. Baby functionbaby.hsdoubleMe x = x + x  ghci> :l baby  ghci> doubleMe 9ghci> doubleMe 8.9
    • 14. Try yourselfdoubleUs x y = x*2 + y*2  
    • 15. Try yourselfdoubleUs x y = x*2 + y*2   Main> doubleUs 2 3 Main> 2 `doubleUs` 3
    • 16. Listsghci> 1 : []ghci> 1 : 2 : []
    • 17. Listsghci> 1 : []ghci> 1 : 2 : []Syntactic sugar ;)ghci> let a = [1,2]ghci> a
    • 18. Listsghci> 1 : []ghci> 1 : 2 : []Syntactic sugar ;) ghci> [h,e,l,l,o]ghci> let a = [1,2]ghci> a
    • 19. ListsLists are a homogenous structure! ghci> [h,1,3,b]
    • 20. Listsghci> [1,2,3,2] !! 23 ghci> [1,2,3,2] ++ [2,3]ghci> [2,4] : [[1,2,3,2]] [1,2,3,2,2,3][[2,4],[1,2,3,2]] ghci> [3,9,1] > [2,1,0]ghci> 2 : [1,2,3,2] True[2,1,2,3,2]
    • 21. ListsПолучение элементов списка ghci> let a = [3,2,5,7,9,1] ghci> head a ghci> tail a ghci> init a ghci> last a
    • 22. Try it yourself length <list> null <list> reverse <list> take <int> <list> drop <int> <list> maximum <list> minimum <list> sum <list> product <list> <int> `elem` <list>
    • 23. Rangesghci> [1..15][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]ghci> [a..z]"abcdefghijklmnopqrstuvwxyz"ghci> [K..Z]"KLMNOPQRSTUVWXYZ"
    • 24. Rangesghci> [2,4..20]ghci> [3,6..20]ghci> [0.1, 0.3 .. 1]
    • 25. Слово о лени [13,26..]
    • 26. Слово о лени ghci> take 24 [13,26..][13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,208,221, 234,247,260,273,286,299,312] ghci> take 10 (cycle [1,2,3]) [1,2,3,1,2,3,1,2,3,1] ghci> take 10 (repeat 5) [5,5,5,5,5,5,5,5,5,5]
    • 27. List comprehensions ghci> [x*2 | x <- [1..10]]
    • 28. List comprehensions ghci> [x*2 | x <- [1..10]] [2,4,6,8,10,12,14,16,18,20]
    • 29. List comprehensions let chunkyBacon xs =[ if odd x then "chunky" else "bacon" | x <- xs, x < 100, x /= 0 ]
    • 30. Do it yourselfghci> let adjectives = ["Maverick","Natty","Lucid","Oneiric"] ghci> let nouns = ["Lynx","Ocelot","Narwhal","Meerkat"]["Maverick Meerkat","Natty Narwhal","Lucid Lynx","Oneiric Ocelot"] Help functions: filter (> 0) <list>
    • 31. Do it yourselfghci> let full_list = [ if (head adj) == (head noun) then adj ++ " " ++ noun else "" | adj <- adjectives, noun <- nouns]ghci> filter (/= "") full_list["Maverick Meerkat","Natty Narwhal","LucidLynx","Oneiric Ocelot"
    • 32. Tuples Отличия кортежей от списковКортежи могут быть неоднородныКортежи имеют чётко заданную длинуКортежи разной длины имеют разные типы
    • 33. Tuples Неоднородность("hello", "bacon", 515)
    • 34. Немного о типахghci> :t aa :: Char ghci> :t [1,2,2] [1,2,2] :: Num t => [t]ghci> :t "hello""hello" :: [Char] ghci> :t 2.5 2.5 :: Fractional a => aghci> :t 11 :: Num a => a ghci> :t fst fst :: (a, b) -> aghci> :t [1,2,2.5][1,2,2.5] :: Fractional t => [t]
    • 35. Немного о типахghci> :t [1,2][1,2] :: Num t => [t]ghci> :t [1,2,3][1,2,3] :: Num t => [t]ghci> :t ("hello", "bacon")("hello", "bacon") :: ([Char], [Char])ghci> :t ("hello", "bacon", 515)("hello", "bacon", 515) :: Num t => ([Char], [Char], t)
    • 36. Lists of tuplesghci> :t [(1,2),(8,11),(4,5)][(1,2),(8,11),(4,5)] :: (Num t1, Num t) => [(t, t1)]ghci> :t [(1,2),(8,11,9),(4,5)]
    • 37. Tuples functionsghci> fst (1,"sad")1ghci> snd (1,"sad")"sad"ghci> zip [1..] ["one", "two", "three", "four", "five"][(1,"one"),(2,"two"),(3,"three"),(4,"four"),(5,"five")]
    • 38. Last do it yourself
    • 39. Last do it yourselfНайти все возможные прямоугольныетреугольники. (записать длины их сторон вкортежи)Максимально возможная длина стороны -10
    • 40. Last do it yourself Решение:let rightTriangles = [ (a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2]
    • 41. Использованная литература http://learnyouahaskell.com http://tryhaskell.org http://zvon.org/other/haskell/Outputglobal/ index.html
    • 42. Семинар подготовил: Зонов Кирилл Блог: http://graffzon.tumblr.com/ 2012г.

    ×