Personal tools

Care este deosebirea dintre foldl si foldr ?

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
 
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
  +
[[Category:Ro]]
  +
 
In priviinta valorilor ce se vor obtine dupa aplicarea lui foldl si foldr exista diferente. Ele provin din ordinea de parcurgere a listei. Fold'''l''' parcurge lista de la stanga iar fold'''r''' o parcurge de la dreapta. Evaluati: <br>
 
In priviinta valorilor ce se vor obtine dupa aplicarea lui foldl si foldr exista diferente. Ele provin din ordinea de parcurgere a listei. Fold'''l''' parcurge lista de la stanga iar fold'''r''' o parcurge de la dreapta. Evaluati: <br>
   
Line 6: Line 8:
 
30 <br>
 
30 <br>
 
Prelude> <br>
 
Prelude> <br>
 
   
 
Diferenta consta in ordinea in care este parcursa lista. <br>
 
Diferenta consta in ordinea in care este parcursa lista. <br>
 
Diferenta se vede mai usor atunci cand functia aplicata are proprietatea
 
Diferenta se vede mai usor atunci cand functia aplicata are proprietatea
de "necomutativitate a argumentelor" Adica e o functie la care schimband ordinea argumentelor se obtine (in general) alta valoare.
+
de "necomutativitate a argumentelor". Adica e o functie la care schimband ordinea argumentelor se obtine (in general) alta valoare.
   
 
----
 
----
Line 19: Line 20:
 
foldr :: '''(a -> b -> b) -> b -> [a] -> b''' <br>
 
foldr :: '''(a -> b -> b) -> b -> [a] -> b''' <br>
   
  +
O foarte buna lucrare despre fold(r), existenta sa si implicatiile existentei sale se putea gasi aici:
  +
[http://www.cs.nott.ac.uk/~gmh/foldl.pdf A tutorial on the universality and expressiveness of fold ]- by Graham Hutton, Univ. of Nottingham, UK .
 
----
 
----
+
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell ]
+
----
  +
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
  +
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'. ]

Latest revision as of 14:54, 10 February 2008


In priviinta valorilor ce se vor obtine dupa aplicarea lui foldl si foldr exista diferente. Ele provin din ordinea de parcurgere a listei. Foldl parcurge lista de la stanga iar foldr o parcurge de la dreapta. Evaluati:

Prelude> foldl (\ a b -> 10 * a + b) 0 [1,2]
12
Prelude> foldr (\ a b -> 10 * a + b) 0 [1,2]
30
Prelude>

Diferenta consta in ordinea in care este parcursa lista.
Diferenta se vede mai usor atunci cand functia aplicata are proprietatea de "necomutativitate a argumentelor". Adica e o functie la care schimband ordinea argumentelor se obtine (in general) alta valoare.


In priviinta tipurilor lui foldl si foldr nu este nici o diferenta:
Prelude> :t foldl
foldl :: (a -> b -> a) -> a -> [b] -> a
Prelude> :t foldr
foldr :: (a -> b -> b) -> b -> [a] -> b

O foarte buna lucrare despre fold(r), existenta sa si implicatiile existentei sale se putea gasi aici: A tutorial on the universality and expressiveness of fold - by Graham Hutton, Univ. of Nottingham, UK .


Pagina indexata la indexul Categories:Ro


<= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'.