Haskell si Automate

From HaskellWiki
Revision as of 10:06, 31 January 2010 by Ha$kell (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Haskell - Un limbaj functional pur

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 :


. Prezentarea proiectului

Exista 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.

Haskell si Automate

Aveti 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

--}


Mult succes si nu uitati: Proiecte practice inseamna bani de la beneficiari. Aici o steluta * merge catre Facultatea de Informatica de la Iasi unde a fost propus ca tema programul de obtinere a automatului minimal. Felicitari echipei de la Iasi.

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.

<- Inapoi la Intrebarile incepatorului Ro/Haskell.