| R. Kent Dybvig. The SCHEME Programming Language. Prentice-Hall, 1987. |
....All issues addressed in this chapter, will be used in subsequent chapters to present the problem statement of the dissertation and to illustrate our approach to support framework based development. The framework we present in this chapter is a framework for building Scheme interpreters [AS85, Dyb96, FMK96] It was implemented in the context of this dissertation in order to experiment with di#erent flavors of declarative meta programming languages. The framework allows us to implement and experiment with di#erent Scheme variants. In addition, it is used as a means to clarify the problem ....
R. Kent Dybvig. The Scheme Programming Language. Prentice Hall, 1996.
....type system. In particular, not all free names of an expression need be captured by the environment in which it is evaluated. Unlike Nishizaki s environment calculus, ## only supports a simple type system. Aside from Piccola, various other languages have supported explicit environments. Scheme [Dyb87] is the best known, and is dynamically typed. Pebble [BL84] is the other well known example, and is statically typed. Quest [Car91] was inspired by Pebble, and supports explicit import and export of first class modules. The contracts expressed by contractual types are technically very weak, and ....
R. Kent Dybvig. The SCHEME Programming Language. Prentice-Hall, 1987.
....particular component requires relative small improvements or modifications to existing analyses or transformations, but the combination of them for the application of automatic and accurate time bound analysis for high level languages is powerful. We used a higher order functional subset of Scheme [1, 8]. All our analyses and transformations are performed at source level. This allows implementations to be independent of compilers and underlying systems. It also allows analysis results to be understood at source level. Our analysis scales well with program size, as the transformations take linear ....
R. K. Dybvig. The Scheme Programming Language, Second edition. Prentice-Hall, Englewood Cliffs, N.J., 1996.
....language Scheme has been the theater of an intensive exploration of macros, viewed not as an inherently risky business, but as a reasonable way to extend the syntax of one s programming language. The line of research initiated in Kohlbecker s PhD thesis [29] and continued in Chez Scheme [24] is of particular interest to us. Syntactic extensions, as they are called, are hygienic macros where abstract syntax is accessed by pattern matching. In this section, we briefly present a domain specific language over residual terms, designed jointly with Morten Rhiger [34] This language ....
....23 Abstract syntax rewriting (macros) The idea is as old as programming languages. Macros were fraught with name capture peril until the advent of hygienic macro expansion [30] Our domain specific language over residual abstract syntax follows the lead of Chez Scheme s syntactic extensions [24], namely, it uses pattern matching, fenders (i.e. guards) and with expressions. Let insertion: Mogensen suggested to insert residual let expressions to handle partially static values [31] Bondorf and Danvy put let insertion at the core of the Similix partial evaluator to handle call unfolding ....
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....its argument, we can state that it provides all the (strong) normalization steps that are hindered by ML s weak normalization strategy. Our secondary problem is efficiency: because OCaml is a byte code implementation, it is inherently slower than a native code implementation such as Chez Scheme [11], which is our reference implementation. Therefore our benchmarks in OCaml are typically measured in dozens of seconds whereas they are measured in very few seconds in Chez Scheme. Efficiency becomes even more of a problem for the continuation based version of the For comparison, an ....
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....function is constructed. They may result in larger code size, but they allow subcomputations based on the same control conditions to be merged, leading to more accurate space bounds, which can be computed more eciently as well. We choose to start by analyzing a functional subset of Scheme [1, 8] for three reasons. First, high level languages with features like automatic garbage collection are becoming increasingly widely used. Second, existing work on analysis of functional programs, including complexity analysis, can be exploited in our work. Third, the resulting techniques can be ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Clis, N.J., 1987.
.... files (for those that appear multiple times in an assembly) scm A companion modeling product to ACIS is the 3D Toolkit [22] The 3D Toolkit is a set of libraries extending the functionality of the ACIS kernel, as well as an interactive programming environment based on the Elk Scheme Interpreter [7]. scm files contain Scheme programs that run in the 3D Toolkit environment. tsb The 3D EYE TriSpectives workbook file format, describing ACIS based 3D models along with visualization information. xmt .xmt txt Parasolid [20] Transmit Files contain the geometry, topology, and attached data for ....
R. Kent Dybvig. The Scheme Programming Language. Prentice Hall, 1987.
....resulting cost bounds, primitive cost parameters can be obtained based on the language implementation or be measured conservatively or approximately, to give accurate, conservative, or approximate time or space bounds. We have implemented the analyses and transformations for a subset of Scheme [2, 11, 1], a dialect of Lisp. All the transformations are done automatically, and the cost bounds, expressed as operation counts, are computed eciently and accurately. Example programs analyzed include a number of classical sorting programs, matrix computation programs, and various list processing ....
....We have implemented the analysis approach in a prototype system, ALPA (Automatic Language based Performance Analyzer) We performed a large number of experiments and obtained encouraging good results. 6. 1 Implementation and experimental results The implementation is for a subset of Scheme [2, 11, 1]. An editor for the source programs is implemented using the Synthesizer Generator [40] and thus we can easily change the syntax for the source programs. For example, the current implementation supports both the syntax used in this paper and Scheme syntax. Construction of cost bound functions is ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Clis, N.J., 1987.
....code analysis, bearing in mind that it may be used for many other purposes. In recent years, dead code analysis has been made more precise so as to be e ective in more complicated settings [24,10,30,50,5,38] Since recursive data constructions are used increasingly widely in high level languages [56,14,42,3], an important problem is to identify partially dead recursive data that is, recursive data whose dead parts form recursive substructures and eliminate code that computes them. 1 It is dicult because recursive data structures can be de ned by the user, and dead substructures may interleave with ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Clis, N.J., 1987.
....a pattern can test that a certain expression is a literal 42, it cannot test for any literal less than 42 or for any identifier that will eventually be bound to a number . There is no means to partially expand a subform for use in the resulting template, such as a with or with syntax form [1]. That is, there is no way to expand a portion of the syntax, and then use that expanded code to decide how to expand another subform. This makes syntax expanders difficult to abstract as there is no primitive notion of a recursive call to build a portion of an output expression. It is this ....
R. Kent Dybvig. The Scheme Programming Language. Prentice Hall, Inc, second edition, 1996.
....object in each expression. If the object is not a keyword then it is assumed to be an application. If the object is a macro identifier then the expression is replaced by an appropriately transformed expression. A syntactic preprocessor currently gaining popularity is extend syntax. extend syntax [4, 9] is a macro expansion facility which is unusual in that it supports syntactic extensions by means of the symbol . That is, hobject structurei . expands to a list of as many copies of hobject structurei as stated in the invocation of the macro identifier. We use extend syntax only for the ....
R. K. Dybvig, The Scheme Programming Language, Prentice-Hall, Englewood Cliffs, New Jersey (1987).
....the timing constraints, or by dynamically issuing scheduling directives. However, conventional timing constraints are typically too low level to effectively specify progress in a parallel setting. Some notion of progress is found in language features such as engines in MultiLisp and Scheme [Dyb87] Engines typically employ timeouts to execute a function for a certain number of steps (fuel) before returning a continuation. However, engines constrain progress at a low level of detail and are really useful only in a sequential or multiprocessing situation. Yet the expression of progress ....
R. K. Dybvig, The SCHEME Programming Language. Prentice-Hall, 1987.
....defined by [1] lisp scheme chez.lsp a couple of the Chez Scheme extensions lisp interface.lsp confirmers, prompters, file browsers, c. lisp common lisp.lsp a subset of Common Lisp lisp tak.lsp support for the performance analysis examples example programs examples continuations.lsp see [2], page 81 examples word count.lsp see [2] section 9.2 examples text formatter.lsp see [3] section 9.7 examples countable.text test input for word count.lsp examples example.text test input for text formatter.lsp source source directory source FILE ME IN.st expression to file in Lisp ....
....of the Chez Scheme extensions lisp interface.lsp confirmers, prompters, file browsers, c. lisp common lisp.lsp a subset of Common Lisp lisp tak.lsp support for the performance analysis examples example programs examples continuations.lsp see [2] page 81 examples word count.lsp see [2], section 9.2 examples text formatter.lsp see [3] section 9.7 examples countable.text test input for word count.lsp examples example.text test input for text formatter.lsp source source directory source FILE ME IN.st expression to file in Lisp stuff source Lisp continuations.st stand alone ....
[Article contains additional citation context not shown here]
R. Kent Dybvig, "The SCHEME Programming Language", Prentice-Hall, 1987. ISBN 013 -791864-X.
....is required to capture this feature. 68 In this section we state the meaning of the abbreviations in English in order to capture the rst two points. In order to de ne the meanings of the abbreviations formally, we assume that the Lambda based Actor language has one lambda operator; call cc[4]. call cc(v) captures a continuation dynamically and applies it to v. Firstly, when a call cc(v) is evaluated, the entire continuation is captured and v is applied to it. When the continuation is applied to an expression, the expression replaces call cc(v) and restarts the execution. If the ....
R. K. Dybvig. The SCHEME Programming Language. Prentice-Hall, Inc., 1987.
....its argument, we can state that it provides all the (strong) normalization steps that are hindered by ML s weak normalization strategy. Our secondary problem is efficiency: because OCaml is a byte code implementation, it is inherently slower than a native code implementation such as Chez Scheme [18], which is our reference implementation. Therefore our benchmarks in OCaml are typically measured in dozens of seconds whereas they are measured in very few seconds in Chez Scheme. 2 Efficiency becomes even more of a problem for the continuation based version of the type directed partial ....
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....object in each expression. If the object is not a keyword then it is assumed to be an application. If the object is a macro identi er then the expression is replaced by an appropriately transformed expression. A syntactic preprocessor currently gaining popularity is extend syntax. extend syntax [4, 9] is a macro expansion facility which is unusual in that it supports syntactic extensions by means of the symbol . That is, hobject structurei . expands to a list of as many copies of hobject structurei as stated in the invocation of the macro identi er. We use extend syntax only for the ....
R. K. Dybvig, The Scheme Programming Language, Prentice-Hall, Englewood Clis, New Jersey (1987). 18
....generated at run time and how the code will depend on run time values. 1.2. 3 Naive run time code generation in Scheme As an example of a naive implementation of run time code generation we consider a Scheme system compliant with the R 5 RS [26] the latest report on Scheme) here Chez Scheme [18]. Such systems provide a procedure eval that compiles and runs a program represented by an S expression. 10 (eval ( 1 2) 30 This allows for run time code generation using syntax trees as a representation of code templates, as outlined above. As an example, Figure 1.1 presents two ....
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, second edition, 1996.
....and Sponsors Our notion of group is at the intersection of two different ideas: Haynes and Friedman s engines and Kornfeld, Hewitt, and Osborne s sponsors, which we develop below. Haynes and Friedman [19, 20] introduce the engine facility to model timed preemption; variants can also be found in [8, 9, 48]. Engines differ from our groups in a number of ways. Engines are defined in a sequential framework and are used to simulate multiprogramming. Since engines do not deal with parallelism, they do not offer control facilities like pause and awake. Another major difference is that a given ....
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....function is constructed. They may result in larger code size, but they allow subcomputations based on the same control conditions to be merged, leading to more accurate space bounds, which can be computed more efficiently as well. We choose to start by analyzing a functional subset of Scheme [1, 8] for three reasons. First, high level languages with features like automatic garbage collection are becoming increasingly widely used. Second, existing work on analysis of functional programs, including complexity analysis, can be exploited in our work. Third, the resulting techniques can be ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, N.J., 1987.
....particular component requires relative small improvements or modifications to existing analyses or transformations, but the combination of them for the application of automatic and accurate timebound analysis for high level languages is powerful. We used a higher order functional subset of Scheme [1, 7] for three reasons. 1) Functional programming languages, together with features like automatic garbage collection, have become increasingly widely used, but methods for calculating actual running time of functional programs have been lacking. 2) Much work has been done on analyzing and ....
R. K. Dybvig. The Scheme Programming Language, Second edition. Prentice-Hall, Englewood Cliffs, N.J., 1996.
....0 0 MemoFlow(e l 2 2 ; ae; MemoFlow(e l b b ; ae 0 [x 7 0 ] 0 ) add hl 2 ; i ; hx; 0 i add hl b ; 0 i ; hl; i Fig. 4. The procedure Flow builds a flow graph corresponding to the least flow analysis of a program. 5 Performance Our implementation runs on top of Chez [4], a commercially available implementation of Scheme. At optimize level 3, Chez eliminates almost all run time checks, making no safety guarantees. By feeding the output of our analysis to a procedure that inserts explicit run time checks based on the categories described in the previous section, ....
Kent Dybvig. The Scheme Programming Language. Prentice-Hall, Inc., 1987.
....4, and our approach is put into perspective with related work in Section 5. We close, in Section 6, with conclusions. 2. A GENERIC ANALYSIS We now present a generic static analysis for a simple higher order programming language. The analysis is presented in Scheme [Clinger and (editors) 1991; Dybvig 1987] extended with a simple record facility. The facility allows a new record type name with fields x 0 . x n to be defined by the expression (define record name (x 0 . x n ) Fields of a record can then be accessed and updated with the procedures name x i and set name x i respectively. For ....
Dybvig, R. K. 1987. The Scheme Programming Language. Prentice-Hall.
....evaluation in Icon is simple. Icon uses a default evaluation strategy in which the evaluation order is deterministic, even in the presence of backtracking. This strategy is used when procedure invocation and simple expressions are encountered. Icon also provides a number of special forms [Ree86][Dyb87] that may modify the default strategy. These special forms include if and while and are listed in appendix A of this report. In the absence of any special forms, expressions are evaluated left to right. Failure causes resumption of suspended generators in LIFO (right to left) order. The last ....
....represents the remaining computation of the program. A continuation may be viewed as a function of one argument. The argument is required because the current expression s value may affect the control of the remaining computation. Further information on continuations may be found in [Ste76] Ste78][Dyb87][Hay87] 3.2 Continuation passing Style The interpreter described in this report is written in CPS a style of programming in which continuations are given explicitly to direct control flow. This implementation technique is known as the continuation passing style (CPS) Ste76] The use of CPS ....
R. Kent Dybvig. The SCHEME Programming Language. Prentice-Hall, 1987.
....we prove that the Deltaexp preserves SN and deduce that the simply typed Deltaexp calculus is strongly normalizing. There are at least three reasons to consider such an extension: 1. control operators play a crucial role in functional programming languages, such as LISP [31] SML [2] Scheme [13], etc. We will only be able to claim a positive answer to the above question if the theory of explicit substitutions can be extended to control operators; This work is supported by NWO and the British council under UK Dutch joint scientific research project JRP240 and EPSRC grant GR K 25014. ....
R.K. Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....analysis, bearing in mind that it may be used for many other purposes. In recent years, dead code analysis has been made more precise so as to be effective in more complicated settings [21, 10, 26, 45, 5, 33] Since recursive data constructions are used increasingly widely in high level languages [52, 14, 37, 3], an important problem is to identify partially dead recursive data that is, recursive data whose dead parts form recursive substructures and eliminate computations of them. 1 It is difficult because recursive data structures can be defined by the user, and dead substructures may interleave ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, N.J., 1987.
....statically eliminated by our type inference algorithm. The computed information can also be used for unboxing and closure allocation (reference escape) analysis, although this is not pursued in this paper. 1 Introduction LISP and its modern day incarnations such as Common LISP [Ste84] and Scheme [Dyb87,Sch91] are latently typed languages. This means that data values carry specific (type) tags at run time that identify the type of the value. Such a tag is chiefly used to type check the legality of operations executed at run time; e.g. the application of the integer value 5 to the empty list ( is ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....bearing in mind that it may be used for many other purposes. In recent years, dead code analysis has been made more precise so as to be effective in more complicated computations [19, 10, 24, 30, 40, 5] Since recursive data constructions are used increasingly widely in highlevel languages [45, 13, 32, 3], an important problem is to identify partially dead recursive data that is, recursive data whose dead parts form recursive substructures and eliminate computations of them. 1 It is difficult because recursive data structures can be defined by the user, and dead substructures may interleave ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, N.J., 1987.
....transformations as a tool. The following is a more detailed summary of the contents of the thesis. 1. 8 Overview Chapter 2 describes the basic meaning preserving transformations necessary for restructuring programs written in a block structured imperative programming language, in this case Scheme [Dybvig 87] To show how the transformations restructure, they are used in the prototype to restructure a Scheme matrix multiply program. Scheme was selected because of its rich imperative features, its simple syntax, and the availability of a PDG package for Scheme programs [Larus 89] The implementation ....
....have only one value in it, because otherwise there would be extra iteration that was not present before. 5 2. 6 Restructuring a Matrix Multiply Program Now to show how the remaining transformations are used, and give a better sense of how restructurings are achieved, a matrix multiply program [Dybvig 87] shown in Figure 2.1, is restructured. Matrices in this program are represented as lists of (equal length) vectors, 5 The conditions stated for transformations are conservative, and often can be generalized to improve the likelihood of successful transformation, without affecting correctness. ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, NJ, 1987.
....Related Work Our notion of group is at the intersection of two different ideas: Haynes and Friedman s engines and Kornfeld, Hewitt, and Osborne s sponsors, which we develop below. Haynes and Friedman [12, 13] introduce the engine facility to model timed preemption; variants can also be found in [5, 6, 31]. Engines differ from our groups in a number of ways. Engines are defined in a sequential framework and are used to simulate multiprogramming. Since engines do not deal with parallelism, they do not offer control facilities like pause and awake. Another major difference is that a given engine can ....
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....7.2 Limitations of STk : 12 8 Further Investigations and Questions 12 9 Conclusions 13 A The user evaluations of IIC 14 1 Introduction 1. 1 Goals and Motivations While simple debuggers ( Ber93] HO85] NF93] [Dyb87], Cho89] Duc93] GH92] Kam90] nML92] Nai92] NF92] OCH91] Sha83] Sny90] Tol92] WN88] execution profilers ( San94] Kis92] and trace facilities like those available in Chez Scheme ( Dyb87] FF89] allow you to view events in a functions execution and to traverse the ....
....1. 1 Goals and Motivations While simple debuggers ( Ber93] HO85] NF93] Dyb87] Cho89] Duc93] GH92] Kam90] nML92] Nai92] NF92] OCH91] Sha83] Sny90] Tol92] WN88] execution profilers ( San94] Kis92] and trace facilities like those available in Chez Scheme ([Dyb87], FF89] allow you to view events in a functions execution and to traverse the execution stack are widely available, they only allow the programmer access to a small subset of the information which could be useful to her. For example, data about how often functions are called in different ....
[Article contains additional citation context not shown here]
R. Kent Dybvig. The Scheme Programming Language. Number ISBN 0-13-791864-X 025. Prentice Hall, NJ, 1987.
....prototype tool implementing these transformations allows a programmer to manipulate programs written in the imperative language Scheme. Scheme, a Lisp like language, contains all the features of programming languages pointers, side effects, and assignment which make program analysis difficult [Dybvig 87] The current restructuring tool supports twenty basic transformations [Griswold Notkin 93] although composite transformations can be created from the existing transformations. The basic transformations can be divided into four categories. ffl Scoping transformations change where functions and ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, NJ, 1987.
....in separate environments. These environments bind the variable upon which the type predicate test is performed to different abstract values consistent with the predicate check. This environment splitting is not reflected in Fig. 1. 5 Performance Our implementation runs on top of Chez [4], a commercially available implementation of Scheme. At optimize level 3, Chez eliminates almost all run time checks, making no safety guarantees. By feeding the output of the analysis to a procedure that inserts explicit run time checks based on the categories described in the previous section, ....
Kent Dybvig. The Scheme Programming Language. Prentice-Hall, Inc., 1987.
....translation maps simply typable Deltaexp terms to simply typable exp terms and generalises Kolmogorov s double negation translation. The motivation for this work is three fold: 1. control like operators play a crucial role in functional programming languages, such as LISP [30] SML [2] Scheme [12], etc. We will only be able to claim that explicit substitutions provide a bridge between higher order rewriting systems and their implementation if the theory of explicit substitutions can be extended among other to control like operators; 2. control like operators and explicit substitutions ....
R.K. Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....of Icsla. We will depart from the tradition since the expression to be evaluated is first rewritten using a program transformation based on Abstract Continuation Passing Style (ACPS) FWFD88, Que92b] The resulting expression is evaluated using any regular Scheme interpreter, see for instance [Dyb87] We can thus define our language in a very compressed form with only two key points: a program transformation and a library of functions that are defined in Scheme. This presentation is close to the compilation model: control operators are defined in a module which is compiled without ACPS since ....
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 1987.
....include fluid binding of lexical variables and logic programming with first class continuations. 1 Introduction Dynamic state management is required in many situations. Usually dynamic contexts are associated with control contexts, as with dynamic variables, fluid assignment to lexical variables [3], and the dynamic wind operation [2] Logic variable binding is an example of dynamic state maintenance that is not strictly associated with control (return with success does not undo bindings) In this paper we address the problem of maintaining multiple dynamic contexts when their extent is not ....
....dynamic context in which a given body is evaluated [2] Its arguments are nullary procedures that are invoked to perform the prelude, body, and postlude operations, respectively. Using dynamic wind it is straightforward to support dynamic binding of lexical variables, as with the fluid let form [3]. The dynamic wind procedure may be defined in Scheme using a state space that is similar in concept to that which supports the lookup and update operations of Section 2. The new complication is that the state space mechanism should be robust in spite of attempts to enter or leave prelude or ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
....used. 4 Performance We have implemented a source to source flow directed inlining optimization for the full R 4 RS Scheme language [7] Given a Scheme program and an inline threshold T , our optimizer inlines procedures whose specialized size is estimated to be less than T . We use Chez Scheme [11] to compile the optimized programs to native code. Without access to Chez s internal data representations, it is impossible to implement cl ref with the same efficiency as a variable reference. Indeed, using a faithful implementation of the algorithm from the previous section, we found the premium ....
Dybvig, K. The Scheme Programming Language. Prentice-Hall, Inc., 1987.
....the compiler performs such an optimization or not is represented by different weights of the nodes and edges in the DLG. 83 We wrote a tool that generates the three different 0 1 problem formulations discussed in Section 4.5.5 for an input DLG. The tool was written in Scheme, a dialect of Lisp [Dyb87] The sole purpose of this tool was to provide a testbed to determine the efficiency of the different 0 1 problem formulations. The following table shows the sizes of the automatically generated 0 1 problem instances: compact disaggregated node based node based edge based #layout variables 253 ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 1987.
....into the restructured program. The meaning preserving nature of the tool obviates the need to test the restructured program for added errors before proceeding with the modification. In the prototype tool, which restructures programs written in the imperative programming language Scheme [2], the software engineer manipulates the structure of the program by selecting expressions in the source code as parameters to a restructuring operation (Fig. 1) The primary benefit of restructuring source code is that it is the most familiar and commonly available representation [17] Also, ....
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, NJ, 1987.
....expression. Since variables are no longer assignable, we treat them as values. The term language IS b extends the language of the v calculus with the ae expression, a set of reference cells and expressions for creating, assigning and dereferencing cells. Adopting Chez Scheme terminology [7], we use the primitives box, setbox , and unbox to perform these operations in IS b . The first part of Figure 3 contains the specification of the term language IS b . As usual, both abstractions and ae expressions are binding expressions, but while binds variables, ae binds reference cells. ....
Dybvig, R. K. The Scheme Programming Language, Prentice-Hall, Englewood Cliffs, New Jersey, 1987.
....Madison, U. of Utah, Wesleyan, and Yale. Almost half of these are using Scheme in their introductory course. Twenty two secondary schools using Scheme were also identified. Several other Scheme based introductory texts have been written for various types of students and curricular orientations [6, 8, 9, 10, 13, 17, 18], as well as a text on programming language concepts [12] Educational users played a central role in the development of an IEEE and ANSI standard for Scheme [3] A large number of Scheme implementations are available at moderate or no cost covering all popular hardware platforms. We identify, ....
....least three years after termination of the project to provide ongoing support to users throughout the country. 4 Curricular Development A number of texts support the use of Scheme in undergraduate computer science education, primarily in introductory programming and programming languages courses [4, 6, 8, 10, 12, 13, 17, 18]) There is a need, however, for supporting materials to make courses based on these and similar texts more effective. Especially given students who have already been exposed to Scheme, we believe the Scheme language may also be used to advantage in other undergraduate courses. These courses are ....
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 1987.
....such distinctions with call cc. Continuation operations must affect either the entire process tree or single branches of the process tree; there is no way to designate subtrees. Problems also arise when continuations are used for modeling process abstractions, such as coroutines [13] and engines [8, 6]. In such cases, continuations must be saved so that processes can be resumed. Again, it is difficult to specify how much of the process tree is to be affected, but another problem also arises. Such applications typically involve a two part operation: first, the current continuation is captured, ....
....k. The seemingly redundant additional zero arity lambda expressions and the corresponding invocation on line four are present to ensure that k is invoked to restore the root of the controller before any attempt is made to invoke the controller. 5. Control Filters The Scheme procedure dynamic wind [15, 6] may be used to perform setup and clean up actions on entry to or exit from a given computation, even if exit or entry occurs as the result of a continuation invocation. This procedure accepts three arguments, each of which is a zero arity procedure: entry, body, and exit. In the absence of ....
Dybvig, R. Kent. The Scheme Programming Language. Prentice Hall (1987).
....are noted and alternative approaches are discussed. Some familiarity with Lisp and its traditional macro expansion mechanism is assumed. For a survey of macro expansion techniques, see [6] 2. Coding Conventions The code that follows is expressed in Scheme, a lexically scoped dialect of Lisp [2, 10]. The only core syntactic forms those that are not implemented as syntactic extensions are given in Figure 1. Superscript and A preliminary version of this paper was presented at the 1986 ACM Symposium on Lisp and Functional Programming. This material is based on work supported by the ....
....to special binding in Common Lisp. The function eval is the standard evaluation function. The gensym function returns a symbol that is guaranteed to be distinct from all other symbols. Finally, printf provides formatted output a la Common Lisp s format . These features are described fully in [2]. 3. The Traditional Approach to Syntactic Extension Syntactic transformation of Lisp programs may be performed by manipulating source expressions prior to evaluation. Provision for this is easily made by adding a preprocessor to eval , which we call expand . Decoupling of the syntactic ....
Dybvig, R. K., The Scheme Programming Language, Prentice-Hall, 1987.
No context found.
R. Kent Dybvig. The SCHEME Programming Language. Prentice-Hall, 1987.
No context found.
R. Kent Dybvig. The Scheme Programming Language. Prentice Hall, second edition, 1996.
No context found.
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
No context found.
R. K. Dybvig, The Scheme Programming Language, Prentice-Hall, Englewood Cliffs, NJ, 1987.
No context found.
Dybvig, R. K. The Scheme Programming Language. Prentice-Hall, 1987.
No context found.
Dybvig, R. K. The Scheme Programming Language. Prentice-Hall, 1987.
No context found.
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, NJ, 1987.
No context found.
R. K. Dybvig, The Scheme Programming Language, Prentice-Hall, 1987.
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