| Andrew D. Gordon. Functional Programming and Input/Output. Cambridge University Press, 1994. Distinguished dissertations in Computer Science. |
.... Given we do not have direct access to the internals of the IO monad, how can we understand the operation of fixIO Or, in general, how can we understand IO based computations Recently, Peyton Jones introduced a semantics for Haskell IO [67] similar to the monadic transition systems of Gordon [27]. In such a system, IO computations are viewed as sequences of labeled transitions. Each label indicates an e#ect observable in the real world, similar to those found in process calculi [61] Peyton Jones s work used an embedding of a denotational semantics for the functional layer into the IO ....
....on program states, simply by adding rules to make it reflexive and transitive. However, the current definition of given in Figure 8.4 is simply too crude to be useful for this purpose. Intuitively, we want to 112 be able to identify program states if their observable behavior are the same [27, 57, 71]. We leave the exploration of this idea for future work. 8.4.5 Meaning of program states The meaning of a closed program state is its derivation: Definition 8.4.10 (Derivations. Let I : # : P be a closed program state. The derivation for I : # : P is a sequence of labeled transitions, where at ....
[Article contains additional citation context not shown here]
Gordon, A. D. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, Sept. 1994. (99, 112, 121)
....the conjecture further, we need to understand fixIO. First of all, we need a semantics for the computations in the IO monad. Recent work by Peyton Jones introduced a semantics based on observable transitions [11] in the spirit of monadic transition systems that were previously studied by Gordon [4]. In such a system, an IO computation is viewed as a sequence of labeled transitions. Each label indicates an e#ect observable in the real world, similar to those in process calculi [9] Peyton Jones work used an embedding of a denotational semantics for the functional layer into the IO layer. ....
Gordon, A. D. Functional Programming and Input /Output. Distinguished Dissertations in Computer Science. CUP, Sept. 1994.
....prominent mention and the notion of side e#ect being deprecated all round. For a long time, a major disadvantage of functional programming languages was their inability to adequately handle features where side e#ects are an intrinsic component, such as file or other I O operations [BJLM91, p139] Gor94, p xi] However, two methodologies have emerged in the last decade to combine the side e#ect world of I O with the referentially transparent world of functional programming, namely the uniqueness type system of the programming language Clean [BS00] and the use of monads in the Haskell language ....
.... p xi] However, two methodologies have emerged in the last decade to combine the side e#ect world of I O with the referentially transparent world of functional programming, namely the uniqueness type system of the programming language Clean [BS00] and the use of monads in the Haskell language [Gor94] Bir98, Chp 10, pp326 359] However, as a consequence of these developments, functional programs written in these languages now look very like imperative programs as evidenced by sample programs appearing later in this paper. This immediately raises concerns about the relative ease of ....
Andrew D. Gordon. Functional Programming and Input/ Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....at higher types. Given this success, it is important to see how broad the scope of the approach initiated in [1, 4] actually is. In this paper, we consider the lazy calculus [2, 6] This calculus, and certain associated notions such as applicative simulation, have been quite widely influential [8, 11, 13, 14, 17, 19, 22]. In [6] a syntactic construction of a fully abstract model for the basic sequential language was given, and the canonical denotational model was shown to be fully abstract for a certain parallel extension of the language. However, the problem of giving a direct, syntax free, purely semantic ....
A. D. Gordon. Functional programming and Input /Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....prominent mention and the notion of side e#ect being deprecated all round. For a long time, a major disadvantage of functional programming languages was their inability to adequately handle features where side e#ects are an intrinsic component, such as file or other I O operations [BJLM91, p139] Gor94, p xi] However, two methodologies have emerged in the last decade to combine the side e#ect world of I O with the referentially transparent world of functional programming, namely the uniqueness type system of the programming language Clean [BS00] and the use of monads in the Haskell language ....
.... p xi] However, two methodologies have emerged in the last decade to combine the side e#ect world of I O with the referentially transparent world of functional programming, namely the uniqueness type system of the programming language Clean [BS00] and the use of monads in the Haskell language [Gor94] Bir98, Chp 10, pp326 359] However, as a consequence of these developments, functional programs written in these languages now look very like imperative programs as evidenced by sample programs appearing later in this paper. This immediately raises concerns about the relative ease of ....
Andrew D. Gordon. Functional Programming and Input/ Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....form the free algebra on the values for a monad which encapsulates the computational e ects present in the programming language. This idea fed through into the functional programming community where it has led to techniques in structuring compilers for both functional and non functional languages [CH97, Gor94, LH96, LHJ95, JW93, Wad95, Wad97, Wad98]. Less surprisingly the closely related theory of sketches has been used to give accounts of the construction of datatypes [BW90] These applications depend on looking at monads on categories other than Set, and for these categories something interesting happens. Equational logic can be soundly ....
A.D. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....many ways, while the mathematical world is pure, exact or precise and perhaps very clean, tidy and structured in comparison to the psychological world, with dreams and unconscious, for instance. An example of this kind of issue is input output in purely functional languages, solved by using monads[28]. However, there are many di erent opinions on this issue concerning mathematical and real worlds, and this is also a strong piece of evidence that computation is a philosophical notion. This almost entails that philosophy is a theoretical basis of computation and computer science. However, we ....
A. D. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....concern in real time applications. Operational semantics is generally presented by a set of rules for building a computation, and thus can provide a basis for discussing performance. Originally promoted by Plotkin [83, 85, 10] in recent years this approach has gained substantial popularity [35, 69, 81, 87]. When combined with typing, operational techniques can also provide powerful proof techniques [34] Essentially all of the languages mentioned above have been given some kind of formal semantics. A large effort has been made to develop the semantics of ESTEREL, including a denotational semantics ....
Andrew D. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, September 1994.
....types Peter Hancock, Anton Setzer June 12, 2000 1 Introduction There are several practical approaches to modelling input output for functional programs. Two examples are the IO monad of Haskell, and the uniqueness types of Clean. Some of the basic ideas are surveyed in Gordon s thesis [5]. There has been at least a decade of theoretical and practical work in the functional programming community, not least on the conceptual question of understanding how it is that a piece of mathematics , in the form of a functional program can be used to control and bring about changes in the ....
....in [10] These constructions are based on an idea that occurs in work on non wellfounded set by Lars Halln as ( 6] Simulation. The modal predicate transformers introduced above can be used to de ne a notion of a simulation relation between states. We have taken the notion from Gordon [5]. The existence of a simulation relation means that there is a state dependent mapping from transitions to transitions, that can be used to translate a sequence of transitions from the rst state step by step to a sequence of transitions from the second. We rst of all de ne this property in a ....
A. Gordon. Functional programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....di#erence x y onto the output stream. Then one can write in ML the following program write (read read) This is not very satisfactory, since it relies on a fixed order of evaluation of the expression read read . A more satisfactory way consists of so called continuations, see [52]. To the lambda calculus one adds primitives Read, Write and Stop. The operational semantics of an expression is now as follows: M # M hnf , where M hnf is the head normal form 11 of M ; Read M # M a, where a is taken o# the input stream; Write b M # M, and b is put into the output ....
....written on the output stream are interpreted. For example one can imagine that writing echo 7 or print 7 on the output channel will put 7 on the screen or print it out respectively. The use of continuations is equivalent to that of monads in programming languages like Haskell, as shown in [52]. The present version of Haskell I O is more refined than this; we will not consider this issue. If A 0 , A 1 , A 2 , is an e#ective sequence of terms (i.e. A n = F #n# for some F ) then this infinite list can be represented as a lambda term [A 0 , A 1 , A 2 , # [A 0 , A 1 ....
A. D. Gordon, Functional programming and Input/Output, Distinguished Dissertations in Computer Science, Cambridge University Press, 1994.
.... encoding here; those details appear in the companion technical report [4] 6 Related Work and Conclusions The properties and applications of languages with inductive types similar to the constructor level of LX have been well studied by Mendler [18, 17] Werner [31] Howard [13, 14] and Gordon [11], among others. Most of those studies include coinductive and polymorphic types as well as inductive types. It appears as though extending LX with coinductive and polymorphic kinds would not be problematic. We have omitted such extensions at present in order to simplify the language and because it ....
Andrew D. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
.... semantics involving such domains (see [15] and [6] for example) On the other hand, work on co inductively defined applicative bisimilarities has provided quite powerful theories of equivalence of functional programs, defined in terms of their operational semantics (see [1] 10] 5] and [8], for example) This note ties together these two developments via a formal approximation relation, d C P , between the elements, d, of some domain of denotations of programs and the programs, P , themselves. This instance of a so called logical relation was introduced by Plotkin [19] to ....
Gordon, A. D. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....and wait for result interface. We realise that in real hardware systems we need to interact with other devices having internal state. We are considering transactional models for such interfaces including the use of channels. Forms of functional language input output explored in Gordon s thesis [3] may be also be useful. Acknowledgments We are indebted to Neil Jones, Martin Hofmann, Simon Peyton Jones and the anonymous referees for comments which have improved this paper. ....
Gordon, A.D., Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....of simulation and bisimulation. We state open problems regarding the relationship between (bi)simulation equivalences and contextual equivalence, and we prove that contextual equivalence includes Kleene equivalence. First, we define a useful relational operator called compatible refinement [4]. Given a term relation R, its compatible refinement, b R, relates two terms M and N if they have the same outer syntactic constructor, the components of which are pair wise related by R. For example, the definition of compatible refinement between values is: 1) pnq b R pnq, for all n; 2) x:M b ....
A. D. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge U. P., 1994.
....further language support for features that are not essential to input output, e.g. for non strict data constructors, lazy evaluation or static type systems. Theoretical frameworks have been developed that allow to compare these alternatives and to prove their equivalence in expressiveness [Gor94, HS89] but the relations between the approaches are usually presented from a historical or from a theoretical perspective, and the situation is still unsatisfactory with respect to language design. The problems of input output in functional languages are therefore reviewed with a stronger ....
....to the actual work that has been done in this area. Note that, though we hope to provide a rough overview of the history and diversity of the topic, this section is not intended to include a complete list of references. Further reference to historical material can be found in [HS89, JS89, Per91, Gor94, Sch93] Since the early 1960s, side effecting input output primitives have been used as pseudo functions in Lisp [MAE 66, Appendix F] a language with a strong functional flavor but imperative in nature 2 . Today, the ANSI Common Lisp Standard [X3J94] still defines a sequential order of ....
[Article contains additional citation context not shown here]
Andrew D. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....have appeared before (see e.g. CC91,HM95] but there it has usually been used to de ne divergence or non termination predicates. Our use of co induction to de ne an exceptional convergence relation appears to be new. There is not much prior work on equational reasoning about exceptions. In [Gor94, x6.7] Gordon considers a small call by name language with a (deterministic) monadic exception mechanism, rather di erent from our imprecise exceptions, for which he also develops an operational theory of applicative bisimulation using Howe s method [How96] In [PJRH 99] we give a ....
A. D. Gordon, Functional programming and input/output, Distinguished Dissertations in Computer Science, Cambridge University Press, 1994.
....have appeared before (see e.g. CC91, HM95] but there it has usually been used to define divergence or non termination predicates. Our use of co induction to define an exceptional convergence relation appear to be new. There is not much prior work on equational reasoning about exceptions. In [Gor94, x6.7] Gordon considers a small call by name language with a (deterministic) monadic exception mechanism, rather different from our imprecise exceptions, for which he also develops an operational theory of applicative bisimulation using Howe s method [How96] In [PJRH 99] we give a ....
A. D. Gordon, Functional programming and input/output, Distinguished Dissertations in Computer Science, Cambridge University Press, 1994.
....x Gamma y onto the output stream Then one can write in ML the following program write (read Gamma read) This is not very satisfactory, since it relies on a fixed order of evaluation of the expression read Gamma read . A more satisfactory way consists of so called continuations, see Gordon [1994]. To the lambda calculus one adds primitives Read; Write and Stop. The operational semantics of an expression is now as follows: M ) M hnf ; where M hnf is the head normal form 11 of M ; Read M ) M a; where a is taken off the input stream; Write b M ) M; and b is put into the output ....
....written on the output stream are interpreted. For example one can imagine that writing echo 7 or print 7 on the output channel will put 7 on the screen or print it out respectively. The use of continuations is equivalent to that of monads in programming languages like Haskell, as shown in Gordon [1994]. The present version of Haskell I O is more refined than this; we will not consider this issue. If A 0 ; A 1 ; A 2 ; is an effective sequence of terms (i.e. A n = F n for some F ) then this infinite list can be represented as a lambda term [A 0 ; A 1 ; A 2 ; j [A 0 ; A 1 ; A ....
Gordon, A.D. [1994] Functional programming and Input/Output , Distinguished Dissertations in Computer Science, Cambridge University Press.
....higher types. 1 Given this success, it is important to see how broad the scope of the approach initiated in [1, 4] actually is. In this paper, we consider the lazy calculus [2, 6] This calculus, and certain associated notions such as applicative simulation, have been quite widely influential [8, 11, 13, 14, 17, 19, 22]. In [6] a syntactic construction of a fully abstract model for the basic sequential language was given, and the canonical denotational model was shown to be fully abstract for a certain parallel extension of the language. However, the problem of giving a direct, syntax free, purely semantic ....
A. D. Gordon. Functional programming and Input /Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....interactive function, which produces a list of requests, and receives a list of replies to these requests. We could, then, give a semantics to processes which is of the kind used for describing IO; this is reminiscent of the semantics given for interactive programs given in [21] and extended in [7]. We note two factors which we consider important properties of Astro Gofer: The evaluation of a value expression, within a process, cannot perform any space operations. The only evaluations which perform space operations are those of type Process a. It is possible that items of this type ....
Andrew D. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....considerations, I O capabilities have been added in an adhoc manner by the implementors of systems. But I O does not fit in the functional model, because input and output are not functions. Extensions of the functional model have been devised, often based on the concept of monads (see e.g. Gor94] but make a non trivial addition to the original simple model. Since I O is mainly left unspecified, it is difficult to understand and reason about a program, for instance assert properties about its communication behaviour or study its internal parallelism. In the case of rewriting logic, ....
A. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994. ISBN 0 521 47103.
....variety of languages L, and for each of these one only needs to prove (2) to establish soundness. What s more, the proof of (2) is essentially routine, so the burden of proof is greatly reduced by the generic soundness result of part (1) This philosophy has also been taken by Crole and Gordon [6, 9]. Recent work on game semantics [14,15] has provided a model of Plotkin s metalanguage, now known as FPC , which is not only sound but also fully abstract, i.e. it satisfies the following completeness condition. e f ) e] f ] It is therefore natural to ask whether full abstraction ....
Andrew D. Gordon. Functional programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.
....implementing I O. But these features do not fit in the nice and simple underlying model : in order to be able to understand or reason about programs involving I O, the basic computational model has to be extended in non trivial ways, making it not so nice and simple anymore (see for instance [Gor94] about the monadic approach to functional I O) The problem is that functional computation and I O have two different and a priori incompatible interpretations, one in terms of equality and the other in terms of transitions between states. In the case of rewriting, the underlying semantic model, ....
A. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994. ISBN 0 521 47103.
No context found.
Andrew D. Gordon. Functional Programming and Input/Output. Cambridge University Press, 1994. Distinguished dissertations in Computer Science.
No context found.
Andrew D. Gordon. Functional Programming and Input/Output. Cambridge University Press, 1994. Distinguished dissertations in Computer Science.
First 50 documents
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