Haskell si Automate
From HaskellWiki
m (New page on automata) |
|||
| Line 1: | Line 1: | ||
| - | [[Category:Ro]] | + | [[Category:Ro]][[Category:LFA]][[Category:Bc]] |
[[Image:Haskelllogo-small-flag-RO-8.jpg|center|Haskell - Un limbaj functional pur]] | [[Image:Haskelllogo-small-flag-RO-8.jpg|center|Haskell - Un limbaj functional pur]] | ||
Current revision
Haskell este limbajul functional succesor al LISP-ului, Scheme-ului si ML-ului !!!
Cel mai productiv limbaj functional ! Limbajul folosit de autorii limbajului Perl 6 si ales de echipa Linspire, utilizat la Inteligenta artificiala, prelucrari multimedia, Retele Petri, programare functionala in Robotica, sinteza de circuite electronice, motoare de baze de date , cercetare , productie de software "type safe",productie de limbaje (DSL-uri), proiectare automata de scheme electronice, analize statistice si financiare (bancare)...
V-am starnit curiozitatea ? Cititi: Intrebarile incepatorului. Am adaugat raspunsuri noi (16 dec. 2007- 10 oct. 2008).
Stirile lunii:Stiri Ro/Haskell
Cuprinsul paginii :
|
1 . Prezentarea proiectuluiExista deja un veritabil interes pentru Haskell din randul matematicienilor. De altfel daca intrebati pe un forum de discutii care ar fi cel mai bun limbaj pentru matematicieni - uni au intrebat - vi se va raspunde: Haskell. Legaturile dintre Haskell si Matematica pot fi exploatate pentru a obtine specialisti in matematica aplicata capabili sa realizeze produse informatice bazate pe matematica. Programul "Ro/Boosting your Math. Faculty with Haskell" isi propune sa mareasca potentialul unei Facultati de matemnatica prin introducerea Haskell-ukui ca limbaj de laborator si semina. (da - ati citit bine, limbaj de laborator la matematica). deja o serie de grupe de matematica - cel putin acolo unde lucreaza subsemnatul - fac or in laboratoarele de informatica. 2 Haskell si AutomateAveti aici un exemplu, scris la prima strigare, de transpunere a unei pagini de teoria autoamtelor in Haskell. (Dupa o carte de la Cluj a Profesorului Moldovan.) module DFA where -- DFA automat = (q, sigma,delta, "q0", f) q = ["q0","q1","q2","q3"] type Stare = String type Sigma = Char sigma= ["0","1"] delta :: (Stare, Char) -> Stare delta ("q0",'0') = "q2" delta ("q0",'1') = "q1" delta ("q2",'0') = "q0" delta ("q2",'1') = "q3" delta ("q1",'0') = "q3" delta ("q1",'1') = "q0" delta ("q3",'0') = "q1" delta ("q3",'1') = "q2" delta (_,_) = error "Blocat" ----- -- Stari finale z :: (Stare) -> Int z ("q0") = 1 z ("q1") = 0 z ("q2") = 0 z ("q3") = 0 f = [ e | e <- q, z(e) == 1] -- (s,w) tr :: (Stare,[Char]) -> (Stare,[Char]) tr (sf,"") = if (sf `elem` f) then error ("Acceptat-stare finala :"++sf) else error "Neacceptat" tr (s, lit:litere) = ( delta (s,lit) , litere) -- Succesiunea configuratiilor in tranzitie w = "1" cfg 0 = ("q0",w ) cfg 1 = tr (cfg 0 ) cfg n = tr (cfg (n-1) ) -- Numerele naturale naturale :: [Integer] nat n = [n] ++ (nat (n+1)) naturale = nat 0 -- test> map cfg naturale {-- DFA> w "1" DFA> map cfg naturale [("q0","1"),("q1",""), Program error: Neacceptat --}
Intr-adevar, toate teoriile din domeniul limbaje formale si automate care pe vremuri se implementau in Pascal se pot implementa mult mai elegant in Haskell. Pagina indexata la indexul Categories:Ro <= Inapoi la inceputul paginii principale Ro/Haskell. |
Categories: Ro | LFA | Bc

