| C. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. In Functional Programming Languages and Computer Architecture, pages 50--64, 1985. |
....sides of recursive definitions. Moreover, it allows nonrecursive definitions to be interleaved with recursive definitions within a single let rec binding. The compilation scheme we propose for this flavor of let rec is a generalization of the in place update trick described by Cousineau et al. [6]. It is less expressive than that of Boudol [5] as discussed in section 7, but it is simpler and more e#cient, since it does not require the introduction of reference cells. Our main motivation in studying this extended let rec construct is that it plays an important role in the language of ....
....of the compilation scheme described here to compile nonfunctional recursive definitions; this paper is the first formal proof of the correctness of this compilation scheme. The remainder of this paper is organized as follows. In section 2, we first review informally the in place update trick [6], and show that it extends to combinations of recursive and non recursive bindings within the same let rec. In section 3, we formalize the corresponding source language ## . Section 4 defines a target language # alloc , featuring inplace update of memory blocks. We define the compilation scheme ....
[Article contains additional citation context not shown here]
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173--202, 1987.
....whereas the classical one does not. Work on explicit substitution with de Bruijn indices has been first done in depth by Curien (in his PhD thesis, 1983) and was based on categorical combinators. Curien s original work was pursued by applications such as the categorical abstract machine of [CCM 87] ACCL 91] provides an algebraic syntax and semantics for explicit substitution where de Bruijn s indices are used. The connection with the classical calculus is not investigated. HL 89] proposes confluent systems of substitution based on the study of categorical combinators and [Field 90] ....
Cousineau G., Curien P.L. and Mauny M., (1987) The Categorical Abstract Machine, Science of Computer Programming 8, 173-202.
....allow an easier translation to machine code, the intermediate representation may need to be converted to a normal form. For functional languages, the intermediate language is often a lambda calculus. The translation of the lambda calculus to machine code is then often given by an abstract machine [Lan64, App92, CCM87]. A different implementation method for an intermediate language based on the lambda calculus is graph reduction [PJ87] The semantics of programming languages can contribute to the design and verification of compilers, by providing semantics for the intermediate languages, and methods of ....
....and intuitive method of reasoning about an important step in the compilation of programming languages, closure conversion. 1.4.2 Closures and Closure Conversion For the implementation of languages with nested scope, one needs a method of implementing pieces of code with free variables. Closures [Lan64, App92, CCM87] provide such a method. A closure consists of a program with free variables, together with an environment which assigns a value to each of the free variables. For example, in an implementation of the lambda calculus, it would be inefficient to carry out a substitution Mf = x g if M contains ....
G. Cousineau, P. L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8, 1987.
....whereas the classical one does not. Work on explicit substitution with de Bruijn indices has been first done in depth by Curien (in his PhD thesis, 1983) and was based on categorical combinators. Curien s original work was pursued by applications such as the categorical abstract machine of [10]. 1] provides an algebraic syntax and semantics for explicit substitution where de Bruijn s indices are used. The connection with the classical calculus is not investigated. 12] proposes confluent systems of substitution based on the study of categorical combinators and [11] provides an account ....
G. Cousineau, P.-L. Curien and M. Mauny, The Categorical Abstract Machine, Science of Computer Programming 8, (1987) 173-202.
....dependency if it has a function type and a 0 dependency otherwise; additional annotations would be provided for cases where this default interpretation is insufficient. Our As target calculus can be compiled efficiently down to machine code, us ing the qn place updating trick described in [9] to implement the non standard let rec construct. However, this trick assumes constant sized function closures; some work is needed to accommodate variable sized closures as used in the OCaml compiler among others. The next step towards mixin modules for ML is to support type definitions and ....
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173-202, 1987.
....solution is to assume a default size, common to all objects, and default calling conventions, common to all functions, just as if the language was not statically typed. Most existing ML implementations have taken this approach: they use one word representations and uniform calling conventions [6, 9, 4, 3]. This approach solves the problem of polymorphism, but results in a serious loss of eciency. For instance, tuples are always heap allocated, making passing several arguments to a function quite expensive. This eciency loss is unfortunate, especially when large parts of a program are monomorphic ....
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173-202, 1987.
....The ability to combine walks in this manner depends, once again, on the possibility of temporarily suspending a substitution generated by a contraction. The delaying of substitutions has, in fact, been used extensively in the implementation of 17 functional programming languages (e.g. see [11, 14, 19]) In these contexts, the necessary delaying is realized by the simple device of combining a term with an environment that represents bindings for free variables that occur in it. When the de Bruijn representation is used, this simple device is adequate only if the overall term is closed and if ....
G. Cousineau, P-L. Curien, and M. Mauny. The categorical abstract machine. The Science of Programming, 8(2):173-202, 1987.
....terms are considered in these languages and if a term is produced in the course of reduction that has an abstraction at the outermost level, then that term may be combined with its environment and returned as a closure. This idea is used, for instance, in the reduction machine described in [9]. Unfortunately, these assumptions are not appropriate in the context that is of interest to us. For example, the comparison of terms performed within SIMPL requires the production of a head normal form and this may require the contraction of redexes embedded within abstractions as well as the ....
G. Cousineau, P-L. Curien, and M. Mauny. The categorical abstract machine. The Science of Programming, 8(2):173-202, 1987.
....This could make programs quite verbose. Future work includes the design of a concrete syntax for mixin signatures that alleviate this problem in the most common cases. Our #B target calculus can be compiled e#ciently down to machine code, using the in place updating trick described in [10] to implement the nonstandard let rec construct. However, this trick assumes constant sized function closures; some work is needed to accommodate variable sized closures as used in the OCaml compiler among others. The next step towards mixin modules for ML is to support type definitions and ....
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173--202, 1987.
....instruction constructs a closure for a recursive function. In the simplified presentation given in this paper, this is a cyclic closure v = T l : c, v. e] where the first slot of the environment, corresponding to the recursive variable f in the source term, points back to the closure itself [8]. The actual implementation uses the scheme described in [1] instead of cyclic closures. The code part of the recursive closure consists of the compilation of the body b of the definition, preceded by n 1 GRAB instructions and one GRABREC instruction. The n 1 GRAB instructions absorb the ....
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173--202, 1987.
....style into mchine code. But it is useful to separate the closure introduction from mchinecode generation so that the compiler is more modular; we cn rewrite the program into n equiwlent one in which no function hs free wribles. This hs been done in compilers bsed on ordinary A clculus [14, 10] nd on continution pssing style [15, 4] We will represent closure creation nd use in the continution pssing style itself; ech closure will be n explicit record of the CPS. Our example s transformed into closure pssing style is shown in figure 4 The motiwtion for this transformation is that all ....
Cousineau, G., Curien, P. L., and Mauny, M. The categorical abstract machine. In Jouannaud, J.P., editor, Functional Programming Languages and Computer Architecture, LNCS Vol 201, Springer-Verlag, New York (1985) 50 64.
....a 1 dependency if it has a function type and a 0 dependency otherwise; additional annotations would be provided for cases where this default interpretation is insu cient. Our B target calculus can be compiled e ciently down to machine code, using the in place updating trick described in [9] to implement the non standard let rec construct. However, this trick assumes constant sized function closures; some work is needed to accommodate variable sized closures as used in the OCaml compiler among others. The next step towards mixin modules for ML is to support type de nitions and ....
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173202, 1987.
....of the language Data Parallel ML (DPML) described in the PhD thesis [Foi95] and [HF93] In this thesis, a formal semantics for DPML is given using categorical combinators. An abstract machine called the DPCAM, an extension of the sequential Categorical Abstract Machine (CAM) of Cousineau et al. CCM85] is derived from it and proved correct. Caml Flight inherits from a solid theoretical basis. The biggest di erence between Caml Flight and DPML is that DPML is deterministic while Caml Flight, with its current typing system, is not. The addition to the Caml Light typing rules are: e : ....
G. Cousineau, P.-L. Curien and M. Mauny. The Categorical Abstract Machine. In J.- P. Jouannaud, Ed., Functional Programming Languages and Computer Architectures, number 201 in Lecture Notes in Computer Science, Springer, 1985.
....and intuitive method of reasoning about an important step in the compilation of programming languages, closure conversion. 1.3.2 Closures and Closure Conversion For the implementation of languages with nested scope, one needs a method of implementing pieces of code with free variables. Closures [Lan64, App92, CCM87] provide such a method. A closure consists of a program with free variables, together with an environment which assigns a value to each of the free variables. For example, in an implementation of the lambda calculus, it would be inefficient to carry out a substitution Mf N = x g if M contains ....
G. Cousineau, P. L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8, 1987.
....of the chosen narrowing strategy. As a result, the correctness of these implementations is hard to prove. To achieve a verifiable implementation of a functional logic language, Muck [99] has proposed the CAMEL narrowing machine which is based on the Categorical Abstract Machine (CAM) [25], a relatively simple but efficient abstract machine for the execution of functional languages. The CAM has three data areas (code area, value stack, value area) and a small set of plain instructions. Muck has slightly extended the CAM by a heap to store logical variables, choice points in the ....
G. Cousineau. The Categorical Abstract Machine. In G. Huet, editor, Logical Foundations of Functional Programming, pp. 25--45. Addison Wesley, 1990.
.... and the possibility of type checking at compile time (for finding errors) the language ML has evolved into important industrial variants (like Standard ML of New Jersey) Although not widely used in industry, a more e#cient implementation of ML is based on the abstract machine CAML, see [34]. CAML was inspired by the categorical foundations of the lambda calculus, see [107] 72] and [35] All of these papers have been inspired by the work on denotational semantics of Scott, see [103] and [54] Lazy functional languages. Although all computable functions can be represented in an ....
G. Cousineau, P.-L. Curien, and M. Mauny, The categorical abstract machine, Science of Computer Programming, vol. 8 (1987), no. 2, pp. 173--202.
....a run time environment can be represented as a directly indexable array. In an actual computer system, however, run time objects have various di erent sizes depending on their types, and do not conform to this model. To overcome this mismatch, in most implementations of polymorphic languages [2, 1, 11], a run time object is represented as a boxed object, i.e. as a pointer to a value allocated in a heap. By this correspondence, in this paper, we call an operational semantics based on this uniform binding mechanism a boxed semantics. Heap allocation is of course necessary for certain objects ....
....develop such a compilation method, we must rst develop an operational semantics for a higher order polymorphic functional language that accounts for direct manipulation of run time objects of various sizes. Existing formalisms such as natural semantics [12] and various abstract machines including [2, 15] are all based on a boxed semantics mentioned above. To our knowledge, there is no formalism that allows polymorphic functions to manipulate a run time environment consisting of unboxed values. The goal of this paper is to develop one such formalism of an unboxed operational semantics. Just as ....
G. Cousineau, P-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173-202, 1987.
.... fonctionnel de ML [23, 22] le Mini ML de Cl ement, Despeyroux, Despeyroux et Kahn [6] Nous pr esentons ici DPML, son mode de synchronisation et donnons un bref apercu de son implantation portable par la machine abstraite DPCAM, elle meme une extension de la CAM de Cousineau, Curien et Mauny [7]. Il ne s agit ni d un tutoriel ni d une d efinition compl ete, mais du r esum e de cette exp erience de conception r ealisation de langage et de ses aspects les plus originaux. Notre approche pragmatique fut d evelopp ee en fonction des but suivants, que nous ne justifions pas ici: obtenir une ....
G. Cousineau, P.-L. Curien, and M. Mauny, The categorical abstract machine, in Functional Programming Languages and Computer Architectures, J.-P. Jouannaud, ed., no. 201 in Lecture Notes in Computer Science, Springer, 1985.
....An interesting point is that the algorithm may give more efficient code when non free constructors are allowed. 6. 2 Compilers mapping to an abstract machine The idea to use an abstract machine as an intermediate level for compilation is widespread in the area of functional programming languages [Ken90, FW87, CCM85] and logic programming languages (many commercial implementations of Prolog are based on WAM, the Warren Abstract Machine [AK91] However, most of these machines are an order of magnitude more complicated than ARM. In the case of the WAM, this is because unification and general backtracking ....
....order features, and the absence of a second stack which could be viewed as an optimization in ARM. Another class of machines is based on Turner s SK machine [Tur79] which implements the lambda calculus using combinatorial logic. An example is the Categorial Abstract Machine (CAM) described in [CCM85]. It has 8 instructions and 3 runtime parameters, and it is claimed that compiling CAM code to machine specific code yields faster code than an equivalent C program. Finally, the ABC machine [Ken90] used in the implementation of Clean [vENPS90] based on graph rewriting, has three stacks, a ....
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. In J.-P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 50--64. SpringerVerlag, 1985. 21
....functional language is Landin s SECD machine [33] which he utilizes for the eager (i.e. innermost) evaluation of higher order function application. Two implementations that are related to Landin s approach are by means of the functional abstract machine [10] and the categorical abstract machine [13], respectively. In contrast, the abstract rewriting machine in this paper involves the eager evaluation of first order terms. Several abstract machines have been used for lazy evaluation of higher order function application, notably: the S K reduction machine [45] the G machine [24] the three ....
....the heap, instead of on the cheaper stack. Klaeren and Indermark [30] give a formal correctness proof for their eager implementation of an algebraic specification language with recursive functions, using the abstract stack machine. Further correctness proofs for abstract machines are presented in [35, 13]. 5.3 Functional Languages Backus [4] propagated the use of functional programming languages, and since then, several of such languages have been implemented. The eager first order equational programming language Epic [48, 49] has been implemented by means of the ARM technology. Other ....
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173--202, 1987.
....the structure of terms embedded within abstractions need not be explored. Thus, if a term is produced in the course of fi reduction that has an abstraction at the outermost level, then the term may be combined with its environment and returned as a closure; this idea is used, for instance, in [CCM87] However, this assumption is not appropriate in contexts where lambda terms are used as a means for representation. As an example, consider again the task of determining whether the two terms 10 ( #3 #2) s) #1) and ( #3 #1) t) #1) are equal. In ascertaining that they ....
G. Cousineau, P-L. Curien, and M. Mauny. The categorical abstract machine. The Science of Programming, 8(2):173--202, 1987.
....towers of Hanoi, prime numbers generation (using the sieve of Eratosthenes) and many others. Chapter 4 The Charity Abstract Machine : basics The evaluation strategy for Charity programs is determined by the Charity abstract machine which is an adaptation of the Categorical Abstract Machine [CCM85]. The foundations of both machines lie in category theory. However they differ somewhat in their selection of rewrite rules, combinators, and the evaluation strategy. Underlying the Charity abstract machine is a typed combinator theory in which programs, expressed as combinators, are evaluated ....
G. Cousineau, P. L. Curien, and M. Mauny. "The Categorical Abstract Machine". In G. goos and J. Hartmanis, editors, Functional Programming Languages and Computer Archite cture, volume 201 of Lecture Notes in Computer Science, pages 50--64. Springer--Verlag, September 1985.
....terms are considered in these languages and if a term is produced in the course of fi reduction that has an abstraction at the outermost level, then that term may be combined with its environment and returned as a closure. This idea is used, for instance, in the reduction machine described in [9]. Unfortunately, these assumptions are not appropriate in the context that is of interest to us. For example, the comparison of terms performed within SIMPL requires the production of a head normal form and this may require the contraction of fi redexes embedded within abstractions as well as the ....
G. Cousineau, P-L. Curien, and M. Mauny. The categorical abstract machine. The Science of Programming, 8(2):173--202, 1987.
....for functions of fixed arity is the culprit: the generic implementation uses variadic functions that do not check the number of their arguments. 3. 5 Explicit linked list run time environment Another variation is inspired by the implementation technique of the categorical abstract machine [7]. Standard expository texts [12] employ the same technique. The type of the active syntax is CEnv REnv Val. The representation of the run time environment REnv is a linked list of vectors. Each vector holds the values of the variables abstracted by one surrounding lambda. The compile time ....
Guy Cousineau, Pierre-Louis Curien, and Michel Mauny. The categorical abstract machine. In Proc. Functional Programming Languages and Computer Architecture 1985, volume 201 of Lecture Notes in Computer Science, pages 50--64. SpringerVerlag, 1985.
....of section 2.2 into byte code sequences for the abstract machine of section 3.1. A correct translation, when executed on the abstract machine de ned above, will obtain equivalent operational behavior as the primary semantics. The code is similar to Categorical Abstract Machine (CAM) code [2] but to maintain simplicity, does not support indexing into the argument stack as does the CAM and thus is restricted to implementing rstorder functions. To realize higher order functions, CAM code refers to argument variables with deBruijn indices. Indexed references into the value stack are ....
....form, its explicit, bound variables are eliminated by abstracting to deBruijn indices, which can then be substituted by compositions of combinators fst and snd to access an environment structure of nested pairs. This transformation leads to combinator code for a Categorical Abstract Machine [2]. The transformation produces: horiz extent : String] Int] Int] Int horiz extent = foldr max 0 . map plus . zip pr . Pr (map2 . Pr (length on line . Fst, Fst . Snd) Snd . Snd) where zip pr= uncurry zip and map2 = uncurry map. 5.3.1 Function closures A function with its ....
P. L. Curien and M. Mauny. The categorical abstract machine. In Proc. of 2nd ACM Conf. on Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 50-64. Springer Verlag, September 1985.
.... than towards efficiency, because environments are built explicitly on the heap (whereas the environments of ARM are on a, cheaper, stack) In the context of (lazy) functional languages, many different abstract machines are used, notably SKIM [Tur79] the Categorial Abstract Machine (CAM, CCM85] the Three Instruction Machine (TIM, FW87] the G machine [PJ87] its successor, the spineless tagless G machine (STG, JS89] and the ABC machine [PvE93] These machines address lazy graph rewriting of curried higher order function applications (CAM is basically innermost, but supports lazy ....
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. In J.-P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 50--64. Springer-Verlag, 1985.
....of section 2.2 into byte code sequences for the abstract machine of section 3.1. A correct translation, when executed on the abstract machine de ned above, will obtain equivalent operational behavior as the primary semantics. The code is similar to Categorical Abstract Machine (CAM) code [2] but to maintain simplicity,does not support indexing into the argument stackasdoes the CAM and thus is restricted to implementing rstorder functions. To realize higher order functions, CAM code refers to argumentvariables with deBruijn indices. Indexed references into the value stack are ....
....form, its explicit, bound variables are eliminated by abstracting to deBruijn indices, which can then be substituted by compositions of combinators fst and snd to access an environment structure of nested pairs. This transformation leads to combinator code for a Categorical Abstract Machine [2]. The transformation produces: horiz extent : String] Int] Int] Int horiz extent = foldr max 0 . map plus . zip pr . Pr (map2 . Pr (length on line . Fst, Fst . Snd) Snd . Snd) where zip pr= uncurry zip and map2 = uncurry map. 5.3.1 Function closures A function with its ....
P. L. Curien and M. Mauny. The categorical abstract machine. In Proc. of 2nd ACM Conf. on Functional Programming Languages and Computer Architecture,volume 201 of Lecture Notes in Computer Science, pages 50-64. Springer Verlag, September 1985.
....SML in which the HOFS to be implemented in parallel have been transformed into calls to predefined parallel constructs. These constructs are implemented in the target compiler for which we use the Objective Caml [24] language. This is a dialect of ML, based around a different evaluation mechanism [25] from the SOS of Standard ML, and has a lightweight implementation with modest memory requirements and respectable performance. Although Objective Caml outputs native code directly there is a full C interface which allows us to incorporate our parallel skeletons. The only additional requirement ....
G. Cousineau, P. L. Curien, and M. Mauny. The Categorical Abstract Machine, volume 201 of LNCS, pages 50--64. Springer Verlag, 1985.
....sont de dcomposer et de structurer la compilation, de simplifier les preuves de correction et de permettre des comparaisons formelles en tudiant chaque transformation ou leur composition. Nous nous concentrons ici sur l appel par valeur et dcrivons trois implantations diffrentes: la Cam [7], Tabac un compilateur bas sur [13] et une version stricte de la machine de Krivine [19] 1 Introduction Un des sujets les plus tudis concernant les langages fonctionnels est leur mise en oeuvre. Depuis le clbre article de P.J. Landin [18] il y a plus de trente ans, une plthore de nouvelles ....
....est leur mise en oeuvre. Depuis le clbre article de P.J. Landin [18] il y a plus de trente ans, une plthore de nouvelles machines abstraites ou techniques de compilation a t propose. La liste des machines abstraites fonctionnelles comprend (entre autres) la SECD [18] la Fam [6] la Cam [7], la CMCM [20] la Tim [11] la Zam [19] la G machine [15] et la machine de Krivine [8] D autres implantations ne sont pas dcrites par une machine abstraite mais par des collections de transformations ou de techniques de compilation. Citons par exemple, les compilateurs bass sur la ....
[Article contains additional citation context not shown here]
G. Cousineau, P.-L. Curien and M. Mauny, The categorical abstract machine. Science of Computer Programming, 8(2), pp. 173-202, 1987.
....One of the most studied issues concerning functional languages is their implementation. Since Landin s seminal proposal, 30 years ago [31] a plethora of new abstract machines or compilation techniques have been proposed. The list of existing abstract machines includes the SECD [31] the Cam [10], the CMCM [36] the Tim [20] the Zam [32] the G machine [27] and the Krivine machine [11] Other implementations are not described via an abstract machine but as a collection of transformations or compilation techniques such as compilers based on continuation passing style (CPS) ....
....in constant time. On the other hand, a chain of links has to be followed when accessing a value. The access time complexity is O(n) where n is the number of l s s from the occurrence of the variable to its binding l s (i.e. its de Bruijn index) This specialization, noted As, is used by the Cam [10], the SECD [31] and the strict and lazy versions of the Krivine machine [32] 11] Specializing Ag into As amounts to defining the environment combinators as follows mkbind = l e e.l s x.push e (e,x) access i = fst i o snd with c i = c o . o c (i times) fst = l e (e,x) push e e snd = l e ....
[Article contains additional citation context not shown here]
G. Cousineau, P.-L. Curien and M. Mauny, The categorical abstract machine. Science of Computer Programming, 8(2), pp. 173-202, 1987.
....our starting point is a Relational Specification Env extended with an observation signature, denoted Omega Env OBS . We now define the Compilation process. In practice, this stage starts with the definition of the machine language semantics. We will use the Categorical Abstract Machine (CAM) [3] defined using Relational Semantics. We define a transition relation that describes the evaluation of a single machine instruction and then use the transitive reflexive closure of this relation to evaluate sequences of instructions. The machine instructions are defined by the following rules: ....
G. Cousineau, P-L. Curien, and M. Mauny. The Categorical Abstract Machine. In Proceedings International Symposium on Semantics of Data Types, Sophia-Antipolis, France, pages 50--64. Springer-Verlag, 1984. Lecture Notes in Computer Science, 173.
....languages is their implementation. Since the seminal proposal of Landin, 30 years ago [19] a plethora of new abstract machines or compilation techniques have been proposed. The list of existing abstract machines includes (but is surely not limited to) the SECD [19] the FAM [6] the CAM [7], the CMCM [21] the TIM [11] the ZAM [20] the G machine [16] and the Krivine machine [8] Other implementations are not described via an abstract machine but as a collection of transformations or compilation techniques such as CPS based compilers [1] 13] 18] Furthermore, numerous papers ....
....mark is a constant and no closure is necessary in this case, so : Ag [ push s e o E] r = push s e o swap se o Ag [ E] r 4.2 Shared environments A first choice is to instantiate Ag with linked environments. This specialization, noted As, is widely used among the functional abstract machines [7][19] 20] The structure of the environment is a tree of closures and a closure is added to the environment in constant time. On the other hand, a chain of links has to be followed when accessing a value. The access time complexity is O(n) where n is the number of l s s from the occurrence to its ....
G. Cousineau, P.-L. Curien and M. Mauny, The categorical abstract machine. Science of Computer Programming, 8(2), pp. 173-202, 1987.
....on the least fixpoint theory. However, the implementation techniques (translation techniques or interpretation) for these languages ask questions [6] The use of graph reduction techniques and compilation into stack abstract machine code as the SECD machine [10] the G machine or the CAM machine [4] seem to be the most efficient methods. Parallel architectures lead to new research directions, facing the problem of efficiency. A way is to implement the implicit parallelism, to distribute independant tasks on the processors. But these works lead to two drawbacks : the fine grain of parallel ....
Cousineau G., Curien P.L., Mauny M. - The categorical abstract machine. Proceedings of the conference on functional languages and computer architecture, L.N.C.S. n 201, 1985.
....any redex contained therein, have the potential to be shared in different closures, avoiding redundant reductions. A number of reduction schemes using environments have been proposed (e.g. the SECD machine by Landin [Lan63] the Categorical Abstract Machine (CAM) by Cousineau, Curien and Mauny [CCM85], the K machine by Krivine, the oe calculus by Abadi, Cardelli, Curien and L evy [ACCL91, ACCL90] A 9 common framework for studying all these implementations is the calculus of explicit substitution or oe calculus. The main idea of this calculus is to incorporate the meta operation of ....
G. Cousineau, P. L. Curien, and M. Mauny. The categorical abstract machine. In J.R. Jounaund, editor, Functional Languages and Computer Architectures, volume 201 of LNCS, pages 50--64. SpringerVerlag, 1985.
....whereas the classical one does not. Work on explicit substitution with de Bruijn indices has been first done in depth by Curien (in his PhD thesis, 1983) and was based on categorical combinators. Curien s original work was pursued by applications such as the categorical abstract machine of [CCM 87] ACCL 91] provides an algebraic syntax and semantics for explicit substitution where de Bruijn s indices are used. The connection with the classical calculus is not investigated. HL 89] proposes confluent systems of substitution based on the study of categorical combinators and [Field 90] ....
Cousineau G., Curien P.L. and Mauny M., (1987) The Categorical Abstract Machine, Science of Computer Programming 8, 173-202.
No context found.
G. Cousineau, P.-L. Curien, and M. Mauny, The categorical abstract machine, Science of Computer Programming 8, 173-202 (1987).
No context found.
Guy Cousineau, G., Curien, P.-L., and Mauny, M. The Categorical Abstract Machine. In Science of Computer Programming, volume 8, number 2, pages 173-202, 1987.
No context found.
Cousineau, G., Curien, P. L. and Mauny, M. The categorical abstract machine. Science of Computer Programming, 8(2):173-202, 1987.
No context found.
C. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. In Functional Programming Languages and Computer Architecture, pages 50--64, 1985.
No context found.
Cousineau, G., P.-L. Curien, and M. Mauny (1987). The categorical abstract machine. Science of Computer Programming , 173--202.
No context found.
G. Cousineau, P.L. Curien, and M. Mauny. The categorical abstract machine. The Science of Programming, 8(2):173--202, 1987.
No context found.
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173--202, 1987.
No context found.
Guy Cousineau, Pierre-Louis Curien, and Michel Mauny. The Categorical Abstract Machine. Science of Computer Programming, 8(2):173--202, 1987.
No context found.
Guy Cousineau, Pierre-Louis Curien, and Michel Mauny. The categorical abstract machine. Sci. Comput. Program, 8(2):173--202, 1987.
No context found.
Cousineau, G., Curien, P.-L., and M. Mauny, "The Categorical Abstract Machine." In J.-P. Jouannaud (Ed.), Proceedings of the Conference on Functional Programming and Computer Architecture, Nancy, France, September 1985.
No context found.
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8(2):173202, 1987.
No context found.
Cousineau, G., Curien, P. L., and Mauny, M. The categorical abstract machine. In Functional Programming Languages and Computer Architecture (Sept. 1985), J.-P. Jouannaud, Ed., vol. 201 of Lecture Notes in Computer Science, Springer Verlag, pp. 50--64.
No context found.
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. In J.-P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, Nancy, France. (Lecture Notes in Computer Science, vol. 201), pages 50--64. Springer-Verlag, 1985.
No context found.
G. Cousineau, P. L. Curien, and M. Mauny. The categorical abstract machine. Science of Computer Programming, 8, 1987.
No context found.
G. Cousineau, P.-L. Curien, and M. Mauny. The categorical abstract machine. In J.-P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, volume 201 of Lecture Notes in Computer Science, pages 50--64. SpringerVerlag, 1985. References 48
First 50 documents Next 50
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