Difference between revisions of "Monada parserelor"
m |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | [[Image:Haskelllogo-small-flag-RO-8.jpg|center|Haskell - Un limbaj functional pur - Monade]] |
||
⚫ | Realizarea unui parser modular din parsere mai mici, fie ca ele sunt din biblioteca ParseLib sau din biblioteca Parsec nu se poate face daca nu exista o structura algebrica a combinarii lor. E la fel ca la operatiile cu numere. Acolo calculele cu numere n-ar decurge asa cum stim daca n-ar exista proprietatile algebrice ale structurilor formate de numere (grup, corp, inel formate cu numerele Reale, de exemplu). |
||
+ | [[Category:Ro]] |
||
⚫ | |||
⚫ | Realizarea unui parser modular din parsere mai mici, fie ca ele sunt din biblioteca ParseLib sau din biblioteca Parsec nu se poate face daca nu exista o structura algebrica a combinarii lor. E la fel ca la operatiile cu numere. Acolo calculele cu numere n-ar decurge asa cum stim daca n-ar exista proprietatile algebrice ale structurilor formate de numere (grup, corp, inel - structuri formate cu numerele Reale, de exemplu). |
||
− | <nowiki> |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | <haskell> |
||
⚫ | |||
⚫ | |||
⚫ | |||
+ | </haskell> |
||
⚫ | |||
+ | <haskell> |
||
⚫ | |||
⚫ | |||
+ | </haskell> |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | ---- |
||
⚫ | |||
+ | 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. ]<br> <br> |
||
+ | [http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la Intrebarile incepatorului Ro/Haskell. ] |
Latest revision as of 13:03, 11 October 2008
Realizarea unui parser modular din parsere mai mici, fie ca ele sunt din biblioteca ParseLib sau din biblioteca Parsec nu se poate face daca nu exista o structura algebrica a combinarii lor. E la fel ca la operatiile cu numere. Acolo calculele cu numere n-ar decurge asa cum stim daca n-ar exista proprietatile algebrice ale structurilor formate de numere (grup, corp, inel - structuri formate cu numerele Reale, de exemplu).
Pentru a descrie monada parsererlor trebuie definiti cei doi operatori:>>= si return. Ceea ce se face ca mai jos:
instance Monad Parser where
return a = Parser (\cs -> [(a,cs)])
p >>= f = Parser (\cs -> concat [ parse (f a) cs' | (a,cs') <- parse p cs])
dar nu uitati sa indentati ultimele doua randuri. Iar functia parse e definita:
parse :: Parser a -> String -> [(a,String)]
parse (parser p) = p
Monada este folosita la realizarea front-end-urilor de interpretoare.
Aici mai sunt multe de adaugat.
Pagina indexata la indexul Categories:Ro
<= Inapoi la pagina principala Ro/Haskell.
<- Inapoi la Intrebarile incepatorului Ro/Haskell.