Edit this page Backlinks This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ===== Hoogle ===== [[https://www.haskell.org/hoogle/|Hoogle]] este un motor de căutare pentru funcții, tipuri, clase etc. de Haskell. Puterea sa constă în abilitatea de a căuta funcții atât după nume cât și după tip. ====== Căutare după nume ===== Considerați că tocmai ați auzit de funcția Haskell ''scanl'', dar nu știți ce face. Căutând numele pe Hoogle (https://www.haskell.org/hoogle/?hoogle=scanl) obțineți o listă de rezultate similare; observați că hoogle face matching parțial și vă găsește și funcții numite ''scanl1''. <note tip> Este foarte posibil ca pentru o singură funcție, să găsiți mai multe rezultate cu același nume. În general, acestea sunt funcții din pachete diferite cu același comportament dar specializate pentru alte tipuri de date. De obicei, primul rezultat ar trebui să fie cel dorit. </note> ===== Anatomia unui rezultat ===== {{:pp:hoogle-scanl-result.png|}} Fiecare rezultat are următoarele componente: * pe prima linie este numele complet al funcției, urmat de tipul funcției * click pe numele sau pe tipul funcției vă va duce la descrierea completă a acesteia din cadrul pachetului în care e definită * următoarea linie (cu verde) conține o listă separată cu virgulă de forma "pachet modul-din-pachet" în care se găsește funcția (nu e necesar să înțelegeți bine noțiunile de "pachet" și de "modul"; vă veți uita în principal după funcții care conțin ''base Prelude'') * următoarea linie conține o descriere a comportamentului funcției; butonul ''+'' de la începutul rândului expandează acest câmp, dacă descrierea este lungă Citind descrierea funcției ''scanl'', observăm că aceasta operează ca ''foldl'', dar întoarce o listă cu toate rezultatele parțiale; astfel încât primul element al listei este acumulatorul, iar ultimul rezultatul final: <code> Prelude> foldl (+) 0 [14, 28, 2] 44 Prelude> scanl (+) 0 [14, 28, 2] [0,14,42,44] Prelude> </code> <note tip> acumulatorul e 0; apoi 14, rezultatul operației (0 + 14); apoi 42, rezultatul operației (14 + 28); apoi 44, rezultatul operației (42 + 2) </note>