Personal tools

Pot folosi fail impreuna cu monada parserelor ?

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m
m
Line 1: Line 1:
 
Da, fail are un tip polimorfic asa ca il puteti folosi si cu monada de IO si cu monada parserelor si cu alte monade.
 
Da, fail are un tip polimorfic asa ca il puteti folosi si cu monada de IO si cu monada parserelor si cu alte monade.
   
'''Atentie:''' Fail este intotdeauna urmat de argumentul sau, string-ul care va apare pe ecran si produce oprirea programului cu afisarea acelui mesaj. Vi-l puteti imagina ca un fel de 'exit "Mesaj text dorit de dvs."'
+
'''Atentie:''' Fail este intotdeauna urmat de argumentul sau, string-ul care va apare pe ecran si produce oprirea programului cu afisarea acelui mesaj. Vi-l puteti imagina ca un fel de 'exit "Mesaj text dorit de dvs."' Exceptie fac cateva monade: Monada Maybe, monada listelor ...
   
 
In clasa Monad fail este declarat cu semnatura:
 
In clasa Monad fail este declarat cu semnatura:
Line 13: Line 13:
 
fail s = error s
 
fail s = error s
   
deci ca va avea ca efect afisarea unei erori. Totusi la unele monade fail ''este'' altfel definit, fie din felul cum e declarata monada in biblioteca fie fiindca asa a dorit programatorul.
+
deci ca va avea ca efect afisarea unei erori. Totusi la unele monade fail ''este'' altfel definit, fie din felul cum e declarata monada in biblioteca fie fiindca asa a dorit programatorul. La monada Maybe toate fail-urile nu fac decat sa dea Nothing, fiind declarat:
  +
  +
fail s = Nothing
  +
  +
iar la monada listelor fail, indiferent de string da lista vida, fiind declarat:
  +
  +
fail s = []
   
 
Despre acest subiect mai putem discuta.
 
Despre acest subiect mai putem discuta.

Revision as of 13:53, 16 December 2007

Da, fail are un tip polimorfic asa ca il puteti folosi si cu monada de IO si cu monada parserelor si cu alte monade.

Atentie: Fail este intotdeauna urmat de argumentul sau, string-ul care va apare pe ecran si produce oprirea programului cu afisarea acelui mesaj. Vi-l puteti imagina ca un fel de 'exit "Mesaj text dorit de dvs."' Exceptie fac cateva monade: Monada Maybe, monada listelor ...

In clasa Monad fail este declarat cu semnatura:

fail :: String m a

unde m este monada iar a este orice alt tip incapsulat intr-o valoare monadica (ok, daca ne gandim la valorile monadice ca la niste capsule).

In lipsa altor declaratii pentru a defini operatiile dintr-o monada anume se presuma ca fail a fost definit ca:

fail s = error s

deci ca va avea ca efect afisarea unei erori. Totusi la unele monade fail este altfel definit, fie din felul cum e declarata monada in biblioteca fie fiindca asa a dorit programatorul. La monada Maybe toate fail-urile nu fac decat sa dea Nothing, fiind declarat:

fail s = Nothing

iar la monada listelor fail, indiferent de string da lista vida, fiind declarat:

fail s = []

Despre acest subiect mai putem discuta.


<= Inapoi la pagina principala Ro/Haskell