La ce se foloseste @ ?
Sunt situatii cand doriti ca intr-o ecuatie (dintre ecuatiile unei functii) sa se tina cont de structura unei date. De exemplu atunci cand scrieti sablonul (cap:coada) pentru a separa o lista in cap si coada.
Problema este ca daca doriti sa va referiti la intreaga lista numind-o sa zicem lis nu aveti acest nume lis asociat/legat de intrega lista. Ci doar cap si coada. Evident ca ati putea reconstrui lista din cap si coada cu cons - : - dar se poate si altfel.
Problema se rezolva scriind nu o atribuire lis=(cap:coada) - asa ceva nu exista in Haskell ci scriind pur si simplu in sablon:
lis@(cap:coada)
In acest moment va puteti folosi de:
lis - care e intreaga lista
cap - care este capul listei
coada - care este coada listei.
Fireste ca merita sa incercati asa ceva si cu alti construcructori sau cu alte sabloane.
Aceasta ar fi o explicatie minimala. Un exemplu, chiar daca ceva mai complicat, gasiti urmand aceasta legatura externa. Cautati @ pe pagina de la: <http://www.willamette.edu/~fruehr/haskell/evolution.html>