Difference between revisions of "Programati si zambiti !"

From HaskellWiki
Jump to navigation Jump to search
m
m
 
Line 1: Line 1:
  +
[[Category:Ro]]
  +
 
http://www.haskell.org/happy/Happy.gif
 
http://www.haskell.org/happy/Happy.gif
 
Click pe show pentru a expanda cuprinsul.<br>
 
Click pe show pentru a expanda cuprinsul.<br>
Line 55: Line 57:
 
http://www.haskell.org/happy/Happy.gif
 
http://www.haskell.org/happy/Happy.gif
 
----
 
----
  +
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
 
  +
----
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell ]
+
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
  +
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'. ]

Latest revision as of 14:35, 10 February 2008


Happy.gif Click pe show pentru a expanda cuprinsul.
Operatia inversa se face cu click pe hide.

. Este plus un nume de functie ca si f , g sau x ? Dar $ ?

Prelude> ( \ (+) -> 1 +2 ) (-)
-1
Prelude> ( \ x -> x 1 2 ) (-)
-1
Prelude> ( \ x -> x 1 2 ) (-)
-1
Prelude> ( \ ($) x y -> y $ x ) (+) 1 2
3

.Ce tipuri au: $ aplicat lui $, "punct" aplicat lui "punct" si alte combinatii ?

Prelude> :t ($ ($) )
flip ($) ($) :: (((a -> b) -> a -> b) -> c) -> c
Prelude> :t (. (.) )
flip (.) (.) :: (((a -> b) -> a -> c) -> d) -> (b -> c) -> d
Prelude> :t ((.). )
((.) .) :: (a -> b -> c) -> a -> (d -> b) -> d -> c
Prelude> :t ($)
($) :: (a -> b) -> a -> b

.Cum putem scrie numere octale ?

let (//) = (\ a b -> 8 * a + b) in 7//1
57

let (#) = (\ a b -> 8 * a + b) in 7#1
57

Daca definiti (#) = (\ a b -> 8 * a + b) puteti scrie numerele octale in maniera : 3#4#7
Nu incercati cu (*) in loc de (#) deoarece * apare in definitie cu vechiul sau sens, deci nu trebuie redefinit. Incercarea de a evalua let (*) = (\ a b -> 8 * a + b) in 7#1 a reusit sa dea interpretorul Hugs peste cap.

.Cum transformam un string in numar octal in maniera traditionala ?

Baza8> foldl (\ a b -> 8 * a + b) 0 $ map (\ a -> ord a - ord '0') "74"
60
Baza8>

.Cum se redefineste, operatorul plus ca sa faca inmultiri ?

Baza8> let (+) = (*) in 2 + 3
6

. Cum transform o cifra in caracterul corespunzator ?

Baza8> head $ show 1
'1'
Baza8>


Nota: figurina de mai sus este simbolul unui generator de parsere care produce surse Haskell, numit Happy. Il puteti privi pe Happy ca pe un fel de Yacc sau Bison care produce surse in Haskell. Sunt totusi unele deosebiri intre Bison (sau Yacc ) si Happy. De fapt sunt chiar imbunatatiri:
- Happy va permite sa produceti mai multe parsere din acelasi fisier cu specificatii.
- Happy va da un control bun asupra arborilor generati, iar codul pe care l-aveti de scris e mai scurt.
[Pagina originala despre Happy o gasiti aici (eng.)]

Happy.gif


Pagina indexata la indexul Categories:Ro


<= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'.