language style evolution
[ case study: that Hamlet cliché ]
To be, or not to be: that is the question:
C:
q = to ? be : !be;
Haskell:
q = or [to be, (not . to) be]
… and so on.
[ case study: that Hamlet cliché ]
To be, or not to be: that is the question:
C:
q = to ? be : !be;
Haskell:
q = or [to be, (not . to) be]
… and so on.
How they all fit together:
1 2 3 4 5 6 7 8 | module Badger where badger :: Int -> Int -> [String] badger mushroom snake = badger' mushroom snake mushroom snake where badger' m s 0 s' = "Mushroom" : "Mushroom" : badger' m s m s' badger' m s m' 0 = "Snaaaaaaaaake" : badger' m s m s badger' m s m' s' = "Badger" : badger' m s (m' - 1) (s' - 1) |
A Haskell 8-liner based on this short made by Weebl.
Dacă acum ceva (destul de mult) timp am dorit să găsesc o formulă aproximativ filosofică a acestui fenomen care, țin să precizez, încă mi se pare extrem de dubios și cât se poate de diabolic, voi încerca astăzi o abordare implicită, formală [§], pur matematică, așa cum îi șade bine acestei trăiri minunate, care într-o lume perfectă este musai să fie una, evident, perfectă (foarte perfectă, după cum probabil ar spune primarul și prietenul nostru mult iubit, Marean). More… »
Fiindcă totuși am discutat în repetate rânduri despre computer science, iar „computer science” include și „coding”, am încercat mai devreme să fac din nou syntax highlighting-ul să meargă pe blog și am reușit. Aparent, syntaxhighlighter-ul (folosit, am impresia, și pe wordpress.com) funcționa ok, dar nu în comment-uri, fapt ce m-a făcut să revin la vechiul WP-Syntax, care își face treaba și suportă un număr mare de limbaje, inclusiv pe cele așa-zis exotice.
Acestea fiind spuse, se dă următorul cod Haskell:
gogu :: Int -> [Int] gogu x = x : (gogu (x + 1))
Codul este pus între tag-uri de tip pre, cu parametrul lang=”haskell” (și opțional, line=”x”, unde x e numărul primei linii).