Exista o functie cons ca in LISP ?

From HaskellWiki
Revision as of 19:05, 10 June 2009 by Ha$kell (talk | contribs) (speech about cons)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Da, numai ca nu se numeste 'cons'. Si este un operator binar infixat - dar in esenta este tot o functie.

Se scrie ':'

Lista [1,2,4,7] este de fapt 1:2:4:7:[] si deoarece operatorul asociaza la DREAPTA 1:2:4:7:[] inseamna 1:(2:(...)) adica 1:(2:(4:(7:[] ))).

Tipul (semnatura) acestei functii este unul polimorfic. Ea primeste un argument de tip x si un al doilea argument de tip lista de x. Din ele produce o lista de x-uri.

(:) :: x -> [x] -> [x]

Sau daca vreti, asa, evidentiind pe randul al doilea tipul rezultatului:

(:) :: x -> [x]

      -> [x]

Despre acest operator se spune ca ar fi provocat mari discutii in comitetul Haskell. Unii vorbitori au cerut ca : sa fie rezervat pentru semnaturile functiilor , ca in matematica. f:R-> R

A invins partida celor care il doreau pe ':' insemnand cons.