29 citations found. Retrieving documents...
L. Cardelli. The functional abstract machine. Polymorphism, 1(1), 1983.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents

Functional Low-Level Interpreters - Karczmarczuk (2002)   (Correct)

....source, and ending with the execution of the compiled (or hand assembled) programs . It was not our aim to teach the compilation of functional languages, but something more orthodox, and rather simple. For the compilation of functional languages we suggested the very abundant literature, e.g. [7 9]. The presented material is a (modified a little) fragment of the compilation course delivered to the 4 th year (Matrise) computer science students at the University of Caen. Our students knew Scheme and some imperative languages, and they were competent enough to accept any not too exotic ....

Luca Cardelli, The Functional Abstract Machine, AT&T Bell Lab. Tech. Report TR-107, (1983).


Hardware/Software Co-Design using Functional Languages - Mycroft, Sharp (2001)   (4 citations)  (Correct)

....1 , M 2 , IM 1 , IM 2 , g and k where M 1 and M 2 are processor instances and IM 1 and IM 2 are instruction memories (see Section 2.2) 2. 1 The Stack Machine Template Our stack machine can be seen as a cut down version of both Landin s SECD machine [5] and Cardelli s Functional Abstract Machine [3]. Each instruction has an op code field and an operand field n. The following instructions are defined: PushC(n) push constant n onto the stack; PushV(n) push variable (from o#set n into the current stack) PushA(n) push the value of the stack machine s argument an (see Section 2.2) to the ....

Cardelli, L. The Functional Abstract Machine. Technical Report TR-107, AT&T Bell Laboratories, April 1983.


Higher-Level Hardware Synthesis - Sharp (2002)   (Correct)

....M 2 , IM 1 , IM 2 , g and k where M 1 and M 2 are processor instances and IM 1 and IM 2 are instruction memories (see Section 9.2.2) 9.2. 1 The Stack Machine Template Our stack machine can be seen as a cut down version of both Landin s SECD machine [91] and Cardelli s Functional Abstract Machine [31]. Each instruction has an op code field and an operand field n. Figure 9.2 defines the instructions supported by the stack machine. The stack machine template, SMT, is an abstract model of the stack machine parameterised on the code it will have to execute. Given a stack machine program, s, i.e. ....

CARDELLI, L. The functional abstract machine. Tech. Rep. TR-107, AT&T Bell Laboratories, April 1983.


Unboxed Objects and Polymorphic Typing - Leroy (1992)   (155 citations)  (Correct)

....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 ....

L. Cardelli. The functional abstract machine. Polymorphism, 1(1), 1983.


Abstract Machines for Programming Language Implementations - Diehl, Hartel, Sestoft (2000)   (6 citations)  (Correct)

....16 (2000) 739 751 743 architecture. They conclude that eventhough scripting language perform less well than C, special hardware support is not warranted. 6. Abstract machines for functional programming languages The first abstract machines for functional languages, such as the SECD [81] and FAM [26], defined strict evaluation, also known as eager or call by value evaluation, in which function arguments are evaluated before the call, and exactly once. More recently, most work has focused on lazy (or call by need) evaluation, in which function arguments are evaluated only if needed, and at ....

....environment E, a control C holding the instructions to execute, and a dump D holding a continuation. i.e. a description of what must be done next) Cardelli s Functional Abstract Machine (1983) is a much extended and optimized SECD machine used in the first native code implementation of ML [26,27]. The Categorical Abstract Machine (1985) was developed by Cousineau et al. 34] Its instructions correspond to the constructions of a Cartesian closed category: identity, composition, abstraction, application, pairing, and selection. It was the base for the CAML implementation of ML. The ....

L. Cardelli, The functional abstract machine, Technical Report TR-107, AT&T Bell Labs, 1983.


A Reversible SE(M)CD Machine - Kluge   (Correct)

....include the runtime structures that are essential for running computations both forward and backward. The machine considered here is a modi ed version of Landin s secd machine [Lan64] which has been variously used as a basic model for more sophisticated functional or function based machinery [CMQ83,Joh87]. The four stack like runtime structures it supports are known to be a control structure C which, as a sequence of terms or instructions, holds the program text to be executed; a workspace stack S which (temporarily) holds evaluated terms and eventually the result of the computation; an ....

....count value accordingly. 7 Outline of a reversible graph reducer The semcd machine may be used as a starting point for the design of more realistic reversible graph reduction machinery. These machines usually have n ary functions transformed into supercombinators or some equivalent closed forms [CMQ83,Joh87,GK96] and then compiled to (abstract) machine code. Supercombinator applications create, e.g. on some runtime stack, frames of some n argument (pointer) entries, push return addresses, and then branch out into the supercombinator codes. This action is roughly equivalent to creating on stack E of the ....

Cardelli, L.; McQueen, D.: The Functional Abstract Machine, The ML/LCF/HOPE Newsletter, AT&T, Bell Labs, Murray Hill, NJ, 1983


Modeling Sharing and Recursion for Weak Reduction.. - Zine-El-Abidine..   (Correct)

....to this subtle point in the paper. 5 a specific strategy and makes the mentioned duplication implicit in the data structures. Later abstract machines include some variation in the used reduction strategy but remain dedicated to one (some early, seminal examples are Plotkin 1977, Henderson 1980, Cardelli 1983). The first issue, sharing to avoid duplication, was addressed already by Wadsworth (1971) who proposed graph reduction which is the simple idea that duplication should be delayed as long as possible by representing subterms of common origin by identical subgraphs. This way all duplicates ....

Cardelli, L. (1983), The functional abstract machine, Technical Report TR107, Bell Labs.


Hardware/Software Co-Design using Functional Languages - Mycroft, Sharp (2001)   (4 citations)  (Correct)

....1 , M 2 , IM 1 , IM 2 , g and k where M 1 and M 2 are processor instances and IM 1 and IM 2 are instruction memories (see Section 2.2) 2. 1 The Stack Machine Template Our stack machine can be seen as a cut down version of both Landin s SECD machine [5] and Cardelli s Functional Abstract Machine [3]. Each instruction has an op code eld and an operand eld n. The following instructions are de ned: PushC(n) push constant n onto the stack; PushV(n) push variable (from o set n into the current stack) PushA(n) push the value of the stack machine s argument an (see Section 2.2) to the ....

Cardelli, L. The Functional Abstract Machine. Technical Report TR-107, AT&T Bell Laboratories, April 1983.


A Novel Approach Towards Peephole Optimisations - Gill (1991)   (1 citation)  (Correct)

....Generator ) Assembly Language ) Optimiser ) Optimised Assembly Language To give clarity to this process, a concrete example of both an intermediate form and an assembly language are given. The intermediate form used here is a small subset of Cardelli s Functional Abstract Machine (FAM) [3]. The target language is a simple assembly language, which is a subset of the 68000 assembly language. The 68000 like structure was chosen because of its non regular register set. For example, in the assembly language arithmetical operations act on the D register, and indirection can only be done ....

Luca Cardelli. The Functional Abstract Machine. Polymorphism, 1(1), 1983.


Hardware/Software Co-Design using Functional Languages.. - Mycroft, Sharp (2000)   (4 citations)  (Correct)

....which computes the 10th triangular number is shown in Fig. 1. We argue that SAFL is clear enough that these gures can be understood without further explaination. Our stack machine can be seen as a cut down version of both Landin s SECD machine [2] and Cardelli s Functional Abstract Machine [1]. SM has two registers, PC (program counter) and SP (stack pointer) Each operation has an op code eld and an operand eld n. The following operations are de ned: Halt return top of stack as result to machine invoker; PushC(n) push constant n onto the stack; PushV(n) push variable (from ....

....because it is much easier to reason about when channel based communication to external devices is added to our language. We can resolve the issue about having a fuller functional language by adding extra stack machine primitives to deal with closures explicitly in the style of Cardelli s FAM [1]. A sucient set would be PushF(n) push free variable n) PushL( push entry point ) MkClos(n) pop an entry point and n values and push a closure containing them together with itself 3 ) and PopJsr (like Jsr but rst pops its destination from the stack) We would also need to use memory in ....

Cardelli, L. FAM|A functional abstract machine. 198x.


Techniques for Dynamic Software Migration - Attardi, Filotti, Marks (1988)   (4 citations)  (Correct)

....it is desirable to provide the ACM with support for reification and reflection. Two basic ACM design have emerged in the project: the HLACM and the HARP. turn. 3.2 Migration Via Interpretation: the HLACM The High Level Abstract Common Machine [1] is derived from the Chaos machine of L. Cardelli [9] [10] 3.2.1 Description The HLACM is basically an interpreted byte code machine. It is a stack machine designed to support high level functional languages. The machine provides a machine independent memory model on top of which there is a closure model for the representation of functional ....

L. Cardelli, The Functional Abstract Machine, AT&T Bell Laboratories, Technical Report 1983.


ΓCMC: A Novel Way of Compiling Functional Languages - Lins, Lira (1992)   (Correct)

....languages was graph interpretation of combinators, as introduced by Turner in [12] The understanding of the evaluation mechanisms of these languages allowed implementation to move from interpretation towards compilation, with substantial gain in performance. Cardelli s abstract machine FAM [3] developed for the compilation of strict functional languages was an important step in this search for efficiency. Johnsson [10] developed a strategy for compiling lazy functional languages, described as an abstract stack machine, called the G Machine. The basic principle of the G Machine is to ....

L.Cardelli. The functional abstract machine. Polymorphism, 1, 1983.


Types and Polymorphism in Persistent Programming Systems - Connor (1990)   (16 citations)  (Correct)

....let second = proc[ t ] x : array[ t ] t ) x( 2 ) Figure 5.2. 2 A polymorphic addressing problem 113 The problems of implementing parametric polymorphism have been successfully addressed by the implementors of the Ada programming environment [Ich83] the Functional Abstract Machine [Car83], designed primarily to implement ML, and the Persistent Abstract Machine [BCC88, CBC89] designed primarily to implement Napier88. The different requirements of these languages have led to three quite different solutions. The Ada solution is textual, the ML FAM solution is uniform, and the ....

....extra indirections. In a persistent system, object faulting is a major execution cost [Bai89] This is in contrast to functional programming systems, where most data is transient and implementation is normally geared to the production and reclamation of large numbers of temporary heap objects [Car83]. 5.2.4 Semi uniform, partly tagged implementation The uniform implementation of polymorphism as described above relies upon an architecture being able to perform the same instructions for the same logical operation on a value of any type. This prevents the use of different formats within an ....

L. Cardelli "The Functional Abstract Machine" Polymorphism (The ML/LCF/Hope Newsletter) 1, 1 ( January 1983 )


Efficient Data Representation in . . . - Leroy (1990)   (Correct)

....scheme for this small language. The target machine is a stack based machine with environments, where functional values are represented by closures. Call by value is assumed, to be consistent with the strict semantics of ML. This machine is very close to Landin s SECD [10] and Cardelli s FAM [3]. The compilation scheme is given in figure 1. It is straightforward, except maybe for the treatment of variables. The value of a variable is to be found at run time in the environment (a tuple of values) To access this variable, we need to know its position inside this tuple. That s the raison ....

Luca Cardelli. The Functional Abstract Machine. Polymorphism, 1(1), 1983.


Graph Reduction, and how to avoid it (extended abstract of talk) - Johnsson (1995)   (Correct)

....to represent function values, with the environment, i.e. the free variables of the function, being represented by a name value association list. The SECS machine can be adapted to lazy evaluation; Burge [Bur75] for example, describes how this can be done. Cardelli s Functional Abstract Machine [Car83], and the Categorical Abstract machine, CAM, CCM85] can be considered as variations on the SECD theme. Wadsworth [Wad71] describes an interpreter for the lambda calculus which performs normal order graph reduction. In Wadsworth s graph reducer, when applying the fi reduction rule (v:e)e 0 ) ....

L. Cardelli. The Functional Abstract Machine. Polymorphism: The ML/LCF/Hope Newsletter, 1(1), January 1983.


Delivering the Benefits of Persistence to System Construction and.. - Cutts (1992)   (15 citations)  (Correct)

....environment. Hyper programming cannot be supported since source programs are not contained within the environment. Galileo Galileo [ACO85] is a strongly typed object oriented language developed at the University of Pisa in Italy. The language is supported by the Functional Abstract Machine (FAM) Car83] with extensions to permit access to the Persistent Object Store developed by Brown at the University of St Andrews [BMM 92] Any toplevel declarations in an interactive Galileo session are retained within the persistent environment. The compiler is external to the persistent environment and is ....

L. Cardelli "The Functional Abstract Machine" AT & T Bell Laboratories Report TR-107 (1983). 118


Typed Closure Conversion - Minamide, Morrisett, Harper (1996)   (88 citations)  (Correct)

....language into a target language with explicit closures. The translation is described as a deductive system in which the representation of the environment may be chosen independently for each closure. In this way vari ous environment representations, such as those used by the CAM [6] and the FAM [5], as well as hybrid strategies, such as those suggested by Shao and Appel [31] can be explained in a uniform framework. The second stage, closure representation, is a type based translation in which the implementation of closures is determined. The main idea is to represent closures as objects ....

.... Theta c ; x: hx: Theta c i ; hx; xvei The advantage of the CAM strategy is that the cost of the construction of a new environment is constant. However, in the worst case accessing values in the environment takes time proportional to the length of the environment. In contrast, the FAM [5] uses flat environments with no sharing. The closure conversion of Figure 2 accurately models the environment strategy of the FAM if we choose a specific strengthening strategy in the (abs) rule where only the free variables of the function are preserved in the resulting closure s environment. The ....

L. Cardelli. The functional abstract machine. Polymorphism, 1(1), 1983.


A Standard ML Compiler - Appel, MacQueen (1987)   (50 citations)  (Correct)

....particular instruction sequence, it may be that some optimized version of the sequence will be generated instead. The code generator translates programs from lambda language into machine code by means of an abstract machine intermediate form. The abstract machine is similar in spirit to Cardelli s[20]. The abstract machine interface is written as a signature in ML: signature machine = sig type Label val select : int unit val apply : unit unit val tailrecur : int unit val startrecord : int unit val endrecord : unit unit . end; Each of these functions, when called, generates ....

....constructors can be represented completely transparently if they carry an always boxed value, and there are no other value carrying constructors in the datatype (like cons) or if there is only one constructor in the datatype. Finally, ref cells look like one word records. Earlier ML compilers[20] represented mutually recursive functions as a set of closures that point to each other in a cyclic data structure. We wanted to avoid gratuitous circularity, because many garbage collection algorithms are more efficient on acyclic data structures[24] We represent mutually recursive functions ....

Luca Cardelli, "The functional abstract machine," Polymorphism, vol. 1, no. 1, January 1983.


Typed Closure Conversion - Minamide, Morrisett, Harper (1996)   (88 citations)  (Correct)

....applied to its argument; the suspended application, called a closure, is a data structure consisting of a piece of pure code and a representation of its environment. A critical decision in closure conversion is the choice of representation for the environment whether to use a flat FAM like [4], linked CAM like [5] or hybrid representation [30] The choice of representation is influenced by a desire to minimize closure creation time, the space consumed by the environment, and the time to access a variable in the environment [39, 30] An important property of closure conversion is that ....

....to an intermediate language with a primitive notion of closures. We describe the translation as a deductive system where the choice of environment representations may be independently made for each closure. We argue that various representations considered in the literature (such as the FAM [4] or CAM [5] as well as hybrid representations [30] can all be explained in this uniform framework. We establish the correctness of the translation once for all environment representations. The second stage, called closure representation, is another type directed translation where closures are ....

[Article contains additional citation context not shown here]

L. Cardelli. The functional abstract machine. Polymorphism, 1(1), 1983.


Graph-based Operational Semantics of a Lazy Functional Language - Rose   (1 citation)  (Correct)

....languages is presented just keep all the subexpressions around, updating each to its proper value only as needed although it had to some extent been folklore since [McC60] and has been used extensively in implementations of functional languages. Examples are the Functional Abstract Machine [Car83] the G machine [Joh84, BPJR88] Clean [BvEvLP87, KSvEP91] and DACTL [Ken88, GKS89] All of these can be perceived as notations for algorithms that describe how graphs may be used to model the evaluation of the implemented language. Such notations have the advantage that they are directly ....

L. Cardelli. The Functional Abstract Machine. Technical Report TR-107, Bell Labs, 1983.


Compiling a Functional Language - Cardelli (1984)   (42 citations)  Self-citation (Cardelli)   (Correct)

....languages on large address space computers. It can be considered an SECD machine [Landin 64] which has been optimized to allow very fast function application and the use of true stacks (as opposed to linked lists) This section contains a brief overview of the Fam; which is fully described in [Cardelli 83] The machine supports functional objects (closures, which are dynamically allocated and garbage collected) All the optimization and support techniques which make application slower are strictly avoided, while tail recursion and pattern matching calls are supported. Restricted side effects and ....

L.Cardelli. "The Functional Abstract Machine", Bell Labs Technical Report TR-107, 1983.


Typed Closure Conversion - Yasuhiko Minamide Greg   (Correct)

No context found.

L. Cardelli. The functional abstract machine. Polymorphism, 1(1), 1983.


Hardware/Software Co-Design Using Functional Languages - Mycroft, Sharp (2001)   (4 citations)  (Correct)

No context found.

Cardelli, L. The Functional Abstract Machine. Technical Report TR-107, AT&T Bell Laboratories, April 1983.


Applicative Programming and Specification - Gilmore (1993)   (Correct)

No context found.

Luca Cardelli. The functional abstract machine. Polymorphism, 1(1), January 1983.

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