Cunoaște Intuit, curs, operația de intrare de bază

7.2. O - operațiuni de intrare succesive

Tipul de constructor IO este o instanta a clasei Monada. Două funcții de legare monadice, metode Monada de clasă. utilizate pentru producerea de secvențe I - O. Funcția >> este utilizat în cazul în care primul rezultat de funcționare nu este de interes, de exemplu, atunci când aceasta reprezintă o (). Operațiunea >> = transmite rezultatul primei operațiuni, în a doua operație ca argument.

similar cu exemplul anterior folosind interacționare. dar primește intrarea sa de la „intrare-fișier“ și scrie producția sa de „ieșire-fișier“. Înainte de finalizarea programului în mesajul de ieșire standard de imprimare.

Notația do permite programarea într-un stil sintactic mai imperativă. versiune ușor mai complexă din exemplul anterior ar fi un program de:

Funcția de retur este folosită pentru a determina rezultatul intrărilor de funcționare - ieșire. De exemplu, getline definit în termeni getchar. Utilizarea de retur pentru a determina rezultatul:

7.3. Excepție de manipulare în intrare monadă - ieșire

Monada de intrare - ieșire cuprinde un singur sistem de manipulare excepție. Orice operațiune de intrare - ieșire poate ridica o excepție în loc de a se întoarce un rezultat.

Excepții în intrarea monadă - valorile de ieșire sunt prezentate tip IOError. Acesta este un tip abstract: designerii sale sunt ascunse de utilizator. IO bibliotecă definește funcțiile care construiesc și studiază valorile IOError. Singura funcție de Prelude. care creează valoare IOError. este userError. Valorile de eroare personalizate includ un șir de caractere care descrie o eroare.

Excepțiile sunt ridicate și capturate folosind următoarele funcții:

Funcția IOError ridică o excepție; Funcția de captură setează handler care primește orice excepție. indusă de o captură protejată. Excepția este prins de cel mai recent procesor de captură stabilite. Aceste stivuitoare nu sunt selective: ele prind toate excepțiile.

Distribuția de excepții trebuie să fie furnizate în mod explicit în handler de rechemare orice excepții nedorite. De exemplu, în

întoarce f [], atunci când există o excepție de la capătul g al fișierului, altfel excepția a trecut la următoarea tratare exterior. caracteristică isEOFError este parte a bibliotecii IO.

Atunci când o excepție este transferată în afara programului principal, sistemul afișează valoarea asociată Haskell IOError și iese din program.

nu metodă exemplu Clasa IO Monadă (secțiunea „6.3.6“) este userError după cum urmează: