SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
1.
Haskell
И н с т р у к ц и я п о
п р и г о т о в л е н и ю
« Д о к а з а т е л ь с т в о - э т о
п р о г р а м м а , а д о к а з ы в а е м а я
ф о р м у л а - э т о т и п п р о г р а м м ы »
Х . К а р р и
2.
Что такое
функциональное
программирование?
http://ru.wikipedia.org/wiki/
Функциональное_программирование
3.
Haskell
Функциональный
С поддержкой отложенных вычислений
Типизация строгая, статическая
4.
Где взять?
http://hackage.haskell.org/platform/
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 yourself
ghci> 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 yourself
ghci> let full_list = [
if (head adj) == (head noun)
then adj ++ " " ++ noun
else "" |
adj <- adjectives, noun <- nouns]
ghci> filter (/= "") full_list
["Maverick Meerkat","Natty Narwhal","Lucid
Lynx","Oneiric Ocelot"
32.
Tuples
Отличия кортежей от списков
Кортежи могут быть неоднородны
Кортежи имеют чётко заданную длину
Кортежи разной длины имеют разные типы