Documente Academic
Documente Profesional
Documente Cultură
Ana Iova
Denisa Diaconescu
1
Funct, ii
Funct, ii în Haskell. Terminologie
f a c t : : I n t e g e r −> I n t e g e r
• Definit, ie folosind if
f a c t n = i f n == 0 then 1
else n * f a c t ( n − 1)
5
Definirea funct, iilor folosind s, abloane s, i ecuat, ii
f a c t : : I n t e g e r −> I n t e g e r
fact 0 = 1
f a c t n = n * f a c t ( n − 1)
6
Definirea funct, iilor folosind s, abloane s, i ecuat, ii
Ce se întâmplă?
7
Definirea funct, iilor folosind s, abloane s, i ecuat, ii
Ce se întâmplă?
7
Definirea funct, iilor folosind s, abloane s, i ecuat, ii
False | | x = x
True | | _ = True
9
Tipuri de funct, ii
9
Quiz time!
Seria 23: https://questionpro.com/t/AT4qgZu3yb
10
Liste
Liste (slide din C01)
Orice listă poate fi scrisă folosind doar constructorul (:) s, i lista vidă [].
• [1,2,3] == 1 : (2 : (3 : [])) == 1 : 2 : 3 : []
• "abcd" == [’a’,’b’,’c’,’d’] == ’a’ : (’b’ : (’c’ : (’d’ : [])))
== ’a’ : ’b’ : ’c’ : ’d’ : []
11
Definirea listelor. Operat, ii
Intervale s, i progresii
interval = [ 'c ' . . ' e ' ] −− [ ' c ' , ' d ' , ' e ' ]
progresie = [20 ,17..1] −− [ 2 0 , 1 7 , 1 4 , 1 1 , 8 , 5 , 2 ]
progresie ' = [ 2 . 0 , 2 . 5 . . 4 . 0 ] −− [ 2 . 0 , 2 . 5 , 3 . 0 , 3 . 5 , 4 . 0 ]
Operat, ii
Prelude > [1 ,2 ,3] ! ! 2
3
Prelude > " abcd " ! ! 0
'a '
Prelude > [ 1 , 2 ] ++ [ 3 ]
[1 ,2 ,3]
Prelude > import Data . L i s t
12
Definit, ia prin select, ie {x | P (x )}
Prelude > xs = [ 0 . . 1 0 ]
Prelude > [ x | x <− xs , even x ]
[0 ,2 ,4 ,6 ,8 ,10]
Prelude > xs = [ 0 . . 6 ]
Prelude > [ ( x , y ) | x <− xs , y <− xs , x + y == 1 0 ]
[(4 ,6) ,(5 ,5) ,(6 ,4) ]
13
Definit, ia prin select, ie {x | P (x )}
14
zip xs ys
Prelude > : t z i p
z i p : : [ a ] −> [ b ] −> [ ( a , b ) ]
15
zip xs ys
Observat, i diferent, a!
Prelude > z i p [ 1 . . 3 ] [ ' A ' . . ' D ' ]
[ ( 1 , ' A ' ) , ( 2 , 'B ' ) , ( 3 , 'C' ) ]
16
Lenevire (Lazyness)
17
Liste infinite
Prelude > x : y = [ 1 , 2 , 3 ]
Prelude > x
1
Prelude > y
[2 ,3]
Ce s-a întâmplat?
19
S, abloane (patterns) pentru liste
Atent, ie!
S, abloanele sunt definite folosind constructori.
f o o x y | ( x == y ) = x ^2
| otherwise = . . .
21
Quiz time!
Seria 23: https://questionpro.com/t/AT4qgZu3yi
22
Pe săptămâna viitoare!
23