| Peter Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional programming and its applications, pages 177--192. Cambridge University Press, 1982. |
....it hard to express interactions between the actions of the tasks, and the constraints on these interactions, and this in turn makes it hard to reason about those interactions. We therefore use another model based on streams, which was first used in early work on parallel declarative languages [20, 46, 91]. In this model, all changes to the state of the operating system result from I O action requests. Some I O action requests are the work of this program; others are the work of other programs; yet others are the work of physical devices (such as terminals and network interfaces) whose action ....
....and applies the changes they call for (if any) to the current state of the operating system. I O action requests typically also ask for a response. The response can be returned from the operating system through a separate network of streams that routes responses back to individual programs [46], or by including in each request a free variable that the OS binds to a term representing the response to the request [20, 91] To express this way of modeling I O in Mercury, one would need a type declaration like this: type io state = list(io action) type io action ....
Peter Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional programming and its applications, pages 177--192. Cambridge University Press, 1982.
....containing keyboard and mouse inputs. The problem is that corresponding elements in each list are tied together in the result: the user must generate one keyboard input for every mouse input, and vice versa. Early solutions to this problem, such as Henderson s non deterministic merge function [7], were impure. For example, non deterministic merge could be defined as follows, using pseudoHaskell: ndmerge (x:xs) ys = x : ndmerge xs ys ndmerge xs (y:ys) y : ndmerge xs ys The intent of this definition is to evaluate one line or the other depending on which list contains an available item. ....
Peter Henderson, "Purely Functional Operating Systems," in Functional Programming and its Applications, CUP 1982, pp. 177-192.
....particular, the time of arrival of input messages cannot affect the result. Apparently, an operating system that needs to deal with asynchronous events cannot be written in such a language One approach to resolving this dilemma is to add a non deterministic merge operator to the language [56], which merges two lists in order of the arrival time of elements. Because, however, merge is referentially opaque, reasoning about programs that use it becomes difficult. Jones and Sinclair [70] reduce the difficulties associated with merge by restricting its use to systems programmers. They ....
P. Henderson. Purely functional operating systems. In Functional Programming and its Applications. Cambridge University Press, 1982.
....of input messages cannot affect the result. CHAPTER 2. BACKGROUND MATERIAL 33 Apparently, an operating system that needs to deal with asynchronous events cannot be written in such a language One approach to resolving this dilemma is to add a non deterministic merge operator to the language [56], which merges two lists in order of the arrival time of elements. Because, however, merge is referentially opaque, reasoning about programs that use it becomes difficult. Jones and Sinclair [70] reduce the difficulties associated with merge by restricting its use to systems programmers. They ....
P. Henderson. Purely functional operating systems. In Functional Programming and its Applications. Cambridge University Press, 1982.
....bypassing. It also contains the case where all the channels in a tuple are to be bypassed. In that case only a variable of tuple type, o1 in the example, appears in the annotation. 4. 4 Non determinism analysis The introduction of nondeterminism in functional languages has a long tradition [McC63,Hen82,HO90] and has been a source of strong controversy. In [ SS92] the authors claim that an appropriate denition of referential transparency is needed. They show that several apparently equivalent denitions have been around in dioeerent contexts and that they are not in fact equivalent in the ....
P. Henderson. Purely Functional Operating Systems. In J. Darlington, P. Henderson, and D. Turner, editors, Functional Programming and its Applications: An Advanced Course, pages 177191. Cambridge University Press, 1982.
....future work. 2 Non determinism in Eden The introduction of non determinism in functional languages has a long tradition and has been a source of strong controversy. John McCarthy [McC63] introduced the operator amb : a a a which non deterministically chooses between two values. Henderson [Hen82] introduced instead merge : a] a] a] which non deterministically interleaves two lists into a single list. Both operators violate referential transparency in the sense that it is no longer possible to replace equals by equals. For instance, let x = amb 0 1 in x x 6= amb 0 1 amb 0 1 ....
P. Henderson. Purely Functional Operating Systems. In Functional Programming and its Applications: An Advanced Course, pages 177--191. Cambridge University Press, 1982.
....in the functional languages The introduction of non determinism in functional languages has a long tradition and has been a source of strong controversy. John McCarthy [McC63] introduced the operator amb : a a a which non deterministically chooses between two values. Henderson [Hen82] introduced instead merge : a] a] a] which nondeterministically interleaves two lists into a single list. Both operators violate referential transparency in the sense that it is no longer possible to replace equals by equals. For instance, let x = amb 0 1 in x x 6= amb 0 1 amb 0 1 ....
P. Henderson. Purely Functional Operating Systems. In Functional Programming and its Applications: An Advanced Course, pages 177--191. Cambridge University Press, 1982.
....always suffered as having a guest status within procedural operating systems. Procedural operating systems exhibit non deterministic behaviour either through aliasing where a file can be accessed via more than one different filenames, or through the use of a select system call. First Henderson [47] studied a range of systems which encapsulate basic operating system design aspects. Initially, he considered the simplest possible aspect of an operating system as a program that accepts input from a keyboard and displays output to a screen and also a simple database for saving and recalling ....
....such an interleave operator destroys the nature of functional languages and recommended restricted use of it. On the other hand, he admitted that a non deterministic primitive is indispensable for modelling non deterministic behaviour. Jones and Sinclair [62] followed Henderson s work as a basis [47] and presented the design of a single user multiprogramming operating system based on streams. Such a design aimed at demonstrating that streams can be exploited to fulfil the role of interactive communication channels between programs and external devices. Again a non deterministic merge operator ....
[Article contains additional citation context not shown here]
P. Henderson. Purely Functional Operating Systems. In J. Darlington, P. Henderson, and D. A. Tunrer, editors, Functional Programming and its Applications. Cambridge University Press, 1982.
....continue to return a without b getting a look in. CHAPTER 3. OPERATING SYSTEMS AND FUNCTIONAL LANGUAGES 17 3.1.1 Approach suggested by Henderson Peter Henderson was one of the first to carry out research into functional operating systems. His 1980 paper Purely Functional Operating Systems [18] discussed a number of solutions based on process networks, using laziness and the stream model of I O. In its simplest presentation, Henderson s system reserves the names keyboard and screen to define input and output streams for an interactive program. Using Haskell syntax in place of the ....
....while network structuring is an important modularisation, its indiscriminate use can lead to difficult plumbing problems in structuring the functional code that represents the network graph. The use of oracles to avoid instances of interleave is suggested and each of the original examples in [18] is rewritten in a completely deterministic style. The author concedes that this can greatly exacerbate the existing plumbing problems. The most interesting contributions of this work is the introduction of a very simple Unix style shell with primitive I O redirection features, and a discussion ....
Peter Henderson. Purely functional operating systems. In John Darlington, Peter Henderson, and David Turner, editors, Functional Programming and its Applications, pages 177--192. Cambridge University Press, 1982. Original Landmark paper in subject.
.... parallel algorithms, useful for expressing algorithms that contain internal non determinism (like some search algorithms) and can even lead to the elegant implementation of some deterministic algorithms [SB94] A kind of fair non determinism is required to implement functional operating systems [Tur90, Hen82, Sto84, Jon84], to provide a merging of incoming messages. A similar mechanism would also nd a role in Fudgets [CH98] to deal with streams of incoming events from the environment. Since we like to think of functional languages as being good for parallelism, they should be able to express non determinism. In ....
P. Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional Programming and its Applications, pages 177-192. Cambridge University Press, 1982.
....There are parallel algorithms that are inherently non deterministic, deterministic parallel algorithms that require internal non determinism, and algorithms that admit elegant solutions involving non determinism. A kind of fair non determinism is required to implement functional operating systems [22, 10, 21, 13], to provide a merging of incoming messages. A similar mechanism would also nd a role in Fudgets [4] to deal with streams of incoming events from the environment. Since functional languages claim to be well suited to the implementation of parallel algorithms, they should be able to express such ....
P. Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional Programming and its Applications, pages 177-192. Cambridge University Press, 1982.
....a single stream to be executed. An implementation can be considered deterministically at the level where we know about the time at which the commands arrive from the terminals, but at the abstract level (where we hide information about arrival times) non deterministic behaviour is apparent. See [Hen82, especially page 190] for a discussion of this with respect to purely functional operating systems. A subtle example of the use of non determinism occurs in giving the semantics of programming languages. The goal is to leave the implementor free to allocate storage addresses to variables. Thus, ....
P. Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional Programming and its Applications, pages 177--192. Cambridge University Press, 1982.
....There are parallel algorithms that are inherently non deterministic, deterministic parallel algorithms that require internal non determinism, and algorithms that admit elegant solutions involving non determinism. A kind of fair non determinism is required to implement functional operating systems [22, 10, 21, 13], to provide a merging of incoming messages. A similar mechanism would also find a role in Fudgets [4] to deal with streams of incoming events from the environment. Since functional languages claim to be well suited to the implementation of parallel algorithms, they should be able to express such ....
P. Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional Programming and its Applications, pages 177--192. Cambridge University Press, 1982.
.... For example, pipe2 ( creates a version of the multiplication function (written as ( in FVision) which operates on two pipelines of numbers, yielding a pipeline of products: 2 3 = 6 pipe2 ( pipe [2,3,4] pipe [3,4,5] pipe [6,12,20] pipe2 ( pipe0 2) pipe [3,4,5] pipe [6,8,10] Pipelines may be split or joined using these functions: joinPipe : Pipe a Pipe b Pipe (a, b) splitPipe : Pipe (a, b) Pipe a, Pipe b) For example: joinPipe (pipe [1,2,3] pipe [4,5,6] pipe [ 1,4) 2,5) 3,6) splitPipe (pipe [ 1,4) 2,5) 3,6) pipe [1,2,3] pipe [4,5,6] ....
....the glue needed for modular programming. Pipelines are very similar to the notion of streams in the functional programming community, about which any good textbook on Haskell will address (e.g. 2] The use of streams in signal processing and operating systems contexts dates back many years [8]. Streams have also been proposed as a basis for functional animation [1] 7 CONCLUSIONS A domain specific language is a powerful software engineering tool that increases productivity and flexibility in complex applications where ordinary program libraries are less effective. Creating a ....
P. Henderson. Purely functional operating systems. In Functional Programming and Its Applications: An Advanced Course, pages 177--192. Cambridge University Press, 1982.
....we let O Haskell s basic monad operations be denoted by returnO and bindO in this subsection. 8 Related work Much work has been done in extending functional languages with concurrency features. Within the lazy functional community, stream based approaches have a fairly long tradition [Sto86, Tur87, Hen82, HC95]. A common characteristic of these solutions is that communication is directed towards a particular process, and that all input streams for a process are merged into one before reception. This means that stream based processes do not constrain the order in which different messages are received, a ....
....in our meaning of the word. An interesting characterisation of concurrency proposals for functional languages is of course whether they are able to preserve a pure semantics of expression evaluation. Of the works cited above, HC95, Tur87, Sto86, PGF96, Sch95, Hol83] belong to this category, while [Hen82, Rep92, Car86, AVWW96, Sar93] do not. As we have mentioned before, retaining an unobstructed evaluation semantics has been one of the primary goals in the design of O Haskell. There is a host of concurrent object oriented languages that might relate to O Haskell in the sense that they support both concurrency and some typical ....
P. Henderson. Purely Functional Operating Systems. In Functional Programming and its Applications, pages 177--189. Cambridge University Press, 1982.
....merging and parallelism: ffl Henderson s use of tags, and an interleave function; ffl Stoye s message passing; ffl HOPE C s result continuations; ffl Concurrent Clean s event I O; ffl Haskell s approach to I O; ffl the monadic approach. Henderson s operating system Henderson [46] defines a multi user operating system in 250 lines of functional code that has a database application and an editor. It also has a facility to run programs. The text of these programs is put into the database by means of the editor. He introduces tagging to allow separate users to see on their ....
Peter Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional Programming and its Applications, pages 177-- 192. Cambridge University Press, 1982. BIBLIOGRAPHY 188
....intuitively correct, but we leave open the question of how to verify formally that it correctly implements the semantics to be given here. Stream transformers for stream based I O have typically been written using explicit construction of the output list and explicit examination of the input list [8, 14]. Such a programming style can be hard to read. We can avoid explicit mention of input and output lists by using the following combinators to construct stream transformers: getST : inp ST inp out) ST inp out putST : out ST inp out ST inp out nilST : ST inp out getST k xs = case xs ....
....kind of stream transformer used for I O is one that maps a stream of input characters to a stream of output characters. We call such a mechanism Landin stream I O in honour of Landin [16] who suggested that streams would be used to model input output if ALGOL 60 included such. Henderson [8] was the first implementor of character based I O based on Landin stream I O. Executable programs are stream transformers of type LS, with the following intended meanings: type LS = ST Char Char ffl getST k is to mean input a character n from the keyboard and then execute (k n) ffl putST n f ....
Peter Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional Programming and its Applications, pages 177--192. Cambridge University Press, 1982.
....to be enforced through the class mechanism. Lazy evaluation encourages modularity by allowing the generation of possible solutions to be separated from the means of testing or selecting them. Laziness can also be used to code infinite data structures and networks of deterministic processes [Henderson 1981; Turner 1987] These features have persuaded us to design an extension of C which permits the lazy evaluation of function arguments. Quite surprisingly, this extension works very well with ADTs, allowing the encoding of lazy lists, lazy trees, and so on. Once a lazy ADT has been designed in C, ....
....and so on. Once a lazy ADT has been designed in C, lazy) Miranda functions which use the Miranda version of the ADT can be converted into C using the same translation strategy as described here. There have been a number of proposals for introducing non determinism into functional languages [Henderson 1981; Burton 1988] and it would be interesting to see how they could be applied in an imperative setting. Another future topic for investigation is how the use of monads for I O, arrays and state in functional languages [Peyton Jones and Wadler 1993] can be translated into a C context. ....
Henderson, P. 1981. `Purely Functional Operating Systems', Working Material for an Advanced Course on Functional Programming and Its Applications, Univ. of Newcastle Upon Tyne, July.
....deal with I O very well. Research on the incorporation of purely functional I O into functional programming languages has evolved into basically two styles of solutions: stream based so lutions and environment based solutions. Stream based methods have been proposed in a (token) stream style (Henderson, 1982; Turner, 1990; Hudak et al., 1992; Carlsson and Hallgren, 1993) and continuation style (Thompson, 1990; Dwelly, 1989; Perry, 1988) Essentially, stream based methods transform an input stream into an output stream . The output stream is not exclusively used for produc ing output only, it is also ....
Henderson, P. 1982. Purely Functional Operating Systems. In Darlington, J., Henderson, P., Turner, D.A. eds., Functional programming and its applications, Cambridge University Press, pp. 177-192.
...., is given as the first argument to the recursive call to the manager. Because the manager retains the modified database produced by each transaction it has an evolving state. The manager can be made available to many users simultaneously using techniques developed for functional operating systems [Hen82]. 3.2.4. Concurrent Transactions. Concurrency can be introduced between transactions by making the manager eager. This allows the current transaction to be evaluated in parallel with the remaining transactions. The original task evaluates the current transaction. The new task applies the manager ....
Henderson P. "Purely Functional Operating Systems", in Functional Programming and its Application. Darlington J. Henderson P. Turner D.A. (Eds) Cambridge University Press (1982).
....(Cardelli [1986] Concurrent ML (Reppy [1992] Reppy [1991] Facile (Giacalone, Mishra Prasad [1989] ML threads (Cooper Morrisett [1990] and to Jones Hudak [1993] Concurrent ML gets the largest coverage. We also mention related work on functional operating systems (Cupitt [1992] Henderson [1982]; Jones [1983] Jones [1984] Stoye [1985] and on actor languages (Agha [1986] and concurrent object oriented languages (Agha [1990] Yonezawa [1990] 10 Conclusions and further work We have described a small and simple extension to Haskell that allows concurrent programs to be written. Using ....
P Henderson [1982], "Purely functional operating systems," in Functional programming and its applications, Darlington, Henderson & Turner, eds., CUP.
....Por esa raz on son poco adecuados para dise nar sistemas reactivos que han de responder de forma no determinista a uno entre varios eventos externos posibles (p.e. un sistema operativo) Las extensiones propuestas van en el sentido de dotar a los lenguajes funcionales de estas capacidades [Hen82, Kel89]. La transformaci on de programas funcionales ha sido objeto de atenci on casi desde los comienzos. El objetivo aqu i es poder construir algoritmos mediante refinamientos sucesivos. Se parte de una versi on ingenua del mismo, cuya correcci on es obvia por s i misma, y gradualmente se transforma, ....
P. Henderson. Purely Functional Operating Systems. In Functional Programming and Its Applications, pages 177--192. Cambridge University Press, 1982.
....(amb 2 1) as what was originally one choice has now become two. 5 merge, the stream based version of amb, takes a pair of potentially infinite lists and merges them into one, based on the order in which the elements on the streams become available (fair merge) Using this operator as a primitive [8, 12] have shown how a variety of functional operating systems can be expressed in a functional framework. In [4, 2] the potentially non referentially transparent features of amb and Henderson s merge are avoided through the introduction of a new data structure, oracles. In addition to a pair of ....
Peter Henderson. Purely Functional Operating Systems. In J. Darlington, P. Henderson, and D.A. Turner, editors, Functional Programming and its Applications, pages 177--192. Cambridge University Press, 1982.
...., is given as the first argument to the recursive call to the manager. Because the manager retains the modified database produced by each transaction it has an evolving state. The manager can be made available to many users simultaneously using techniques developed for functional operating systems [Hen82]. 3.5 Concurrent Transactions Total Transactions Concurrency can be introduced between transactions by making the list constructor in the manager eager. A typical eager list constructor sparks a thread to evaluate the head of the list and continues to evaluate the tail of the list. The thread ....
Henderson P, "Purely Functional Operating Systems" in Functional Programming and its Application, Darlington J, Henderson P and Turner DA (Eds), Cambridge University Press, (1982).
....this are that the continuation model reduces the syntax for handling the responses to I O operations; the response handling is in a sense built in. 3 Non Determinism One of the well known shortcomings of functional languages is their inability to express nondeterministic behaviour. Henderson [Hen82] shows how introduction of such behavior into a functional language makes it possible to write a wide range of useful operating system like programs. He introduces non determinism by the use of an operator called merge, which produces the nondeterministic merge of two lists. The problem with this ....
P. Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D.A. Turner, editors, Functional Programming and its Applications, pages 177--189, Cambridge University Press, 1982.
....been proposed to limit the damaging effects of nondeterminism or to find declarative ways of dealing with it. Perhaps the simplest additional feature which has been proposed for functional languages to provide concurrency is the non deterministic merge of two streams, as described by Henderson [8], in which items are interleaved into a single result stream in an arbitrary order, depending on the relative times at which they get evaluated or read in. In this way, a program can have two separate input streams, and can respond to events on either stream as they occur, so that the program ....
P. Henderson, "Purely functional operating systems", in J. Darlington, P. Henderson, D.A. Turner (editors) "Functional Programming and its Applications", Cambridge University Press, 1982.
....is not given here see note in the text. as data and functions for manipulating and combining pictures. The applications are not interactive, but use abstraction to structure a picture hierarchically. Arya took this lead and combined it with work on functional representations of processes [Hen82b, Sto86] to produce a functional animation system [Ary89] in which graphical objects are described by processes which may interact with each other, but not with the user. A number of papers describe methods of connecting a functional language interpreter or compiler to a graphical user interface. ....
Peter Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional Programming and its Applications. Cambridge University Press, 1982.
.... parallel algorithms, useful for expressing algorithms that contain internal non determinism (like some search algorithms) and can even lead to the elegant implementation of some deterministic algorithms [SB94] A kind of fair non determinism is required to implement functional operating systems [Tur90, Hen82, Sto84, Jon84], to provide a merging of incoming messages. A similar mechanism would also nd a role in Fudgets [CH93] to deal with streams of incoming events from the environment. Since we like to think of functional languages as being good for parallelism, they should be able to express non determinism. In ....
P. Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional Programming and its Applications, pages 177192. Cambridge University Press, 1982.
....I O system has been implemented and will become part of the new release of Clean. 1 Introduction Research in the area of functional programming languages is increasingly paying more attention to the incorporation of I O into the functional programming paradigm, starting from an early paper by Henderson (1982) to more recent work (Dwelly, 1989; Turner, 1990; Thompson, 1990; Peyton Jones and Wadler, 1993; Carlsson and Hallgren, 1993) In this paper we present some recent results of the research conducted on the incorporation of I O into the lazy, purely functional programming language Clean (Brus et al. ....
Henderson, P. 1982. Purely Functional Operating Systems. In Darlington, J., Henderson, P., Turner, D.A. eds., Functional programming and its applications , Cambridge University Press, pp. 177-192.
...., is given as the first argument to the recursive call to the manager. Because the manager retains the modified database produced by each transaction it has an evolving state. The manager can be made available to many users simultaneously using techniques developed for functional operating systems [11]. Essentially streams of transactions from many users are non deterministically merged into the single input stream consumed by the manager. 3.5 Concurrent Transactions Total Transactions Concurrency can be introduced between transactions by making the list constructor in the manager eager. A ....
Henderson P, "Purely Functional Operating Systems" in Functional Programming and its Application, Darlington J, Henderson P and Turner DA (Eds), Cambridge University Press, (1982).
....I O system has been implemented and will become part of the new release of Clean. 1 Introduction Research in the area of functional programming languages is increasingly paying more attention to the incorporation of I O into the functional programming paradigm, starting from an early paper by Henderson (1982) to more recent work (Dwelly, 1989; Turner, 1990; Thompson, 1990; Peyton Jones and Wadler, 1993; Carlsson and Hallgren, 1993) In this paper we present some recent results of the research conducted on the incorporation of I O into the lazy, purely functional programming language Clean (Brus et al., ....
Henderson, P. 1982. Purely Functional Operating Systems.
....undertake such an investigation in the ML2000 design. We have not included in the above discussion any mention of lazy functional languages [56] such as Miranda [128, 130] Haskell [55] or FL [11] Although some experimental work has been done on building purely functional operating systems [51, 129, 125], these languages have by and large not yet been used in realistic systems programming. One thesis of the present work is that lazy languages are not appropriate vehicles for building large systems, particularly systems programs, because they cannot deal adequately with external notions of state ....
Peter Henderson. Purely functional operating systems. In Functional Programming and Its Applications. Cambridge University Press, 1982.
....polymorphic typing, the ability to pass any value along a channel (including functions, channels, and as yet unevaluated suspensions) 8.2 Functional operating systems The early 1980s saw a great deal of work done on functional operating systems. Typical was the work of Jones and Henderson (Henderson [1982]; Jones [1983] Jones [1984] and Stoye s sorting office (Stoye [1985] All of this work was based on the idea of processes communicating through streams of messages, with a non deterministic merge primitive, or in Stoye s case an external sorting office, that provided a choice construct. ....
P Henderson [1982], "Purely functional operating systems," in Functional programming and its applications, Darlington, Henderson & Turner, eds., CUP.
....[26] The same arguments apply system speed SWI Prolog 1.00 NU Prolog 1.95 wamcc 3.14 Quintus Prolog 3.74 SICStus Prolog fastcode 7. 41 Aquarius Prolog 19.00 Mercury 36.52 Table 1: Benchmark speed ratios on a SPARCserver 1000 to other approaches to declarative I O, such as those based on streams [8, 18, 21] and on monads [17] Making sure that the old state is not referred to again even on backtracking requires determinism information (which is of course available for free in functional languages and in languages based on compulsory committed choice logic programming) Uniqueness and determinism ....
P. Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. Turner, editors, Functional programming and its applications, pages 177--192. Cambridge University Press, 1982.
....to ensure that the old state of the world is never referred to again. Explicit uniqueness information serves this purpose on forward execution, just as linear types do in a functional framework [42] The same arguments apply to other approaches to declarative I O, such as those based on streams [13, 31, 34] and on monads [30] Making sure that the old state is not referred to again even on backtracking requires determinism information (which is of course available for free in functional languages and in languages based on compulsory committed choice logic programming) system speed SWI Prolog ....
P. Henderson. Purely functional operating systems. In J. Darlington, P. Henderson, and D. A. Turner, editors, Functional programming and its applications, pages 177--192. Cambridge University Press, 1982.
No context found.
Henderson, P., Purely Functional Operating Systems, in Functional Programming and its Applications, Eds. Darlington, J., Henderson, P. and Turner, D.A., Cambridge University Press, 1982
No context found.
P.Henderson. Purely Functional Operating Systems. 1982.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC