Monadisches I/O



next up previous
Next: References Up: Exkurs: I/O in Previous: I/O mit unique

Monadisches I/O

Aus den Problemen, die viele Programmierer mit Dialogen hatten, wurde das monadische I/O-Konzept entwickelt. [PJW93] Es basiert auf eine Programmiermethode, die in geschickter Weise Daten implizit weiterreicht, den Monaden. [Wad92][Wad90] Eine Sequentialisierung kann in rein funktionalen Sprachen nur durch Funktionakomposition adequat erreicht werden. Haben wir zwei I/O Funktionen und , die nacheinander ausgeführt werden sollen, so ist dieses am einfachsten zu erreichen, wenn einen Wert hat den als Eingabeargument zur Evaluierung benötigt. Wenn dieser Wert von dann in irgendeiner Weise noch die Umgebung (Filesystem etc) darstellt, dann ist auch die referentielle Transparenz gewährleistet.
Diesem Gedanken liegt das monadische I/O zugrunde. Monaden stellen zwei Operatoren zur Verfügung: bind ein Sequenzoperator, der durch Komposition realisiert wird, und unit einen Operator, der es erlaubt komplexe Datentypen in eine Monade zusammenzupacken, die dann implizit weitergereicht werden. Es kann also gut die für I/O benötigte Umgebung (die World) in einer Monade enthalten sein und weitergereicht werden.
Betrachten wir die beiden Aspekte des monadischen I/O getrennt:

Die auf unsere HP-Anlagen portierte Haskell Version stellt derzeit noch nicht das monadische I/O zur Verfügung. Natürlich kann auch Gofer nicht mit dieser etwas einfacheren Methode aufwarten.



next up previous
Next: References Up: Exkurs: I/O in Previous: I/O mit unique



Sven Eric Panitz
Mi., 01. Nov. 1995, 12:12:54