Arhiva de etichete: pattern matching

Sintaxa îți ușurează scrisul, nu gândirea

Limbajul C# a evoluat foarte frumos în direcția bogăției și eficienței în exprimare, uneori în detrimentul purității academice. Fiecare versiune pune varii trufandale pentru, bunăoară, reducerea ceremoniei, favorizarea logicii și trimiterea fricii în fundal, ori pentru producția expresivă de valori.

Iar prin frică, desigur, mă refer la manifestările noastre defensive precum verificarea diverselor variabile, indiferent de scop: că este sau nu este null, că un număr stă bine chitit într-un interval bine definit, că un obiect oarecare este „activ” ori ba ș.a.m.d.

Superior pe orice teren

Superior pe orice teren

Ele sunt binevenite, iar eu nu-s omul să nu le folosească, ba se poate spune că prezint o vagă propensitate pentru abuz. Pe de altă parte, nu-s nici omul care să nu cârcotească, deci mai întâi am să trec prin ele mai mult pentru propria-mi plăcere, ca o cafea caldă-ntr-o dimineață rece, apoi o să sorbim și un pic de zaț.

În majoritatea lor covârșitoare, notițele mele acoperă diverse aspecte ale operațiunilor pe baza pattern matching, întinzând câteva tentacule și-n direcția construcției obiectelor, unde, iată, avem acum o nouă opțiune în afara constructorilor standard. Și înainte de-a purcede aș vrea să-mi scarpin o traducere mai elegantă (cât de cât) pentru mâncărimea termenului pattern matching.

Citește mai departe

A fi sau a nu fi nimeni și nimic

Odată cu tehnica numită pattern matching (căreia am să-ncerc să-i atribui traducerea verificare tipizată să văz cum se simte la limbaj) – o modalitate de-a verifica dacă o expresie întrunește anumite caracteristici (și de acționare pe baza rezultatului) – există o posibilitate mai apropiată de limbajul natural de-a testa dacă o variabilă are sau nu are valoarea NULL:

Company isNull = null;
Company isNotNull = new Company();

Console.WriteLine(isNull is null);
Console.WriteLine(isNotNull is not null);

Totuși, abordarea nu este complet identică din punct de vedere semantic cu folosirea operatorilor de egalitate (==), respectiv inegalitate (!=). La prima cercetare s-ar putea să pară contraintuitiv, însă, strict semantic, operatorul de egalitate verifică dacă-i egal, iar expresiile is/is not verifică dacă sunt ori nu sunt. Anumiți filozofi ar juisa până-n străfundul nădragilor.

Citește mai departe