id,collection,dc.contributor.author,dc.date.accessioned,dc.date.available,dc.date.issued,dc.description.abstract[en],dc.format.extent,dc.identifier.uri,dc.language,dc.relation.ispartofseries,dc.rights.uri,dc.subject.ddc,dc.title,dc.title.subtitle,dc.type,dcterms.accessRights.openaire,refubium.affiliation.other,refubium.affiliation[de],refubium.mycore.derivateId,refubium.mycore.fudocsId,refubium.resourceType.isindependentpub,refubium.series.name,refubium.series.reportNumber "1f2d1561-8d1d-4dc5-b7ff-5b1d47775cd7","fub188/17746","Scholz, Enno","2018-06-08T07:53:28Z","2009-03-17T11:06:03.271Z","1995","A monad is presented which is suitable for writing concurrent programs in a purely functional programming language. In contrast to, for instance, the IO monad [Launchbury, Peyton Jones 94], the primitives added to the functional language are not represented as built-in functions operating on the monad, but rather by Perry-style constructors [Perry 90] of a distinguished algebraic data type. Therefore, monadic expressions representing concurrent computations are not only first-class objects of the language; in addition, they may even be decomposed. A number of examples show that decomposability of concurrent code is crucial for the purely functional construction of more powerful concurrency abstractions like rendezvous, remote procedure call, and critical regions from the primitives. The paper argues that this technique helps to remedy a recurrent dilemma in the design of concurrent programming languages, namely, how to keep the language small, coherent, and rigorously defined, yet to provide the programmer with all the communication constructs required. It is suggested that functional languages are not only capable of describing concurrent programs, but that in terms.","11 S.","https://refubium.fu-berlin.de/handle/fub188/18938||http://dx.doi.org/10.17169/refubium-22616","eng","urn:nbn:de:kobv:188-fudocsseries000000000021-2","http://www.fu-berlin.de/sites/refubium/rechtliches/Nutzungsbedingungen","000 Informatik, Informationswissenschaft, allgemeine Werke::000 Informatik, Wissen, Systeme::004 Datenverarbeitung; Informatik","A concurrency monad based on constructor primitives","or, being first-class is not enough","Arbeitspapier","open access","Institut für Informatik:::6dd1f8be-8a6d-4a4a-8f8d-572eb83788da:::600","Mathematik und Informatik","FUDOCS_derivate_000000000279","FUDOCS_document_000000001201","no","Freie Universität Berlin, Fachbereich Mathematik und Informatik","95-1"