| C. Chambers. The Cecil language specification and rationale: Version 2.0. Technical Report UW-CS Technical Report 93-03-05, Department of Computer Science and Engineering, University of Washington, December 1995. |
....typechecking on all generic functions is deferred until link time, when all modules are present. This global typechecking approach, which we refer to as System G, is used for typechecking all previous languages with symmetric multimethods, including Kea [Mugridge et al. 91] Cecil [Chambers 92, Chambers 95] ML [Bourdoncle Merz 97] and Tuple [Leavens Millstein 98] 3 Example Programming Idioms There are several flexible programming idioms expressible in Dubious that we would like to be able to statically typecheck. These idioms will serve as benchmarks for evaluating the various ....
.... object erase isa (graphic, display)int erase has method(p point, d) erase points module MyGraphicMod imports GraphicMod object myGraphic isa graphic draw has method(g myGraphic, d) Figure 6: Incompleteness problem combining open objects with non concrete objects Chambers 95] Dylan [Shalit 97, Feinberg et al. 97] the l calculus [Castagna et al. 92, Castagna 97] Kea [Mugridge et al. 91] ML [Bourdoncle Merz 97] and Tuple [Leavens Millstein 98] A second unsafe scenario involves the combination of non concrete objects with multimethods. For example, suppose ....
[Article contains additional citation context not shown here]
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http://www.cs.washington.edu/ research/projects/cecil/www/Papers/cecil-spec.html
....a production is reduced, the parser dispatches to the appropriate Mayan. This Mayan is selected by first finding all Mayans applicable to the production s right hand side, then choosing the most applicable Mayan from this set. While multiple dispatch is present in many languages such as Cecil [9], CLOS [28] and Dylan [27] the exact formulation of Maya s rules is fairly unique. Mayan dispatching is based on the runtime types of AST nodes, but also considers secondary parameter attributes. As described earlier, the pattern parser builds Mayan parameter trees from unstructured lists of ....
....rules bear a particular resemblance to the grand unified dispatcher (GUD) in Dubious [18] Like GUD, Maya uses pattern matching. Additionally, GUD allows dispatch on user defined predicates whereas Maya allows dispatch on the static types of expressions. Languages such as Dubious and Cecil [9] perform static checks to ensure that all generic function invocations unambiguously dispatch to a method. Maya defers these checks to expansion time. A [23] is a family of languages for writing preprocessors: it extends Awk to operate on syntax trees for particular source languages. A supports ....
C. Chambers. The Cecil Language Specification and Rationale: Version 2.0, 1995.
....subtyping. LM2 Multiple subtyping. While simple subtyping eases the expression and addition of di#erent event semantics, multiple subtyping enforces the composition of such semantics. This is independent of whether it is assured through some form of multiple inheritance as o#ered by C , Cecil [14] or Ei#el, through subtyping abstract types (e.g. interfaces in Java) or even mixins (e.g. Flavors [47] Ada [35] The term multiple subtyping here simply denotes the ability of expressing multiple specialization relationships. 3.2 The publish Primitive An obvent can be published, which ....
C. Chambers. The Cecil Language Specification and Rationale: Version 2.0. Technical Report UW-CS Technical Report 93-03-05, Department of Computer Science and Engineering, University of Washington, Dec. 1995.
....to a single object. Many widely used languages such as Smalltalk [Goldberg Robson 83] C [Stroustrup 91] and Java [Arnold Gosling 98] are single dispatch languages. In multiple dispatch languages, such as CLOS [Steele 90, Paepcke 93] Dylan [Shalit 97, Feinberg 97] and Cecil [Chambers 92, Chambers 95] methods do not belong to a single class, rather they are global, and messages can be sent to more that one object at once. Depending on the language, methods can specialize on all or subset of their arguments. With multiple dispatching, method selection is based on the runtime classes of ....
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http://www.cs.washington.edu/research/projects/cecil/www/Papers/cecil-spec.html
....et al. 96] Smalltalk 80 [Goldberg Robson 83] and Eiffel [Meyer 92, Meyer 97] selects a method using the dynamic class of one object, the message s receiver. Multiple dispatch, as found in CLOS [Chapter 28, Steele 90] Paepcke 93] Dylan [Shalit 97, Feinberg 97] and Cecil [Chambers 92, Chambers 95] generalizes this idea, selecting a method based on the dynamic class of any subset of the message s arguments. Multiple dispatch is in many ways more expressive and flexible than single dispatch in object oriented (OO) programming [Bobrow et al. 86, Chambers 92, Castagna 97, Moon 86] In this ....
....class is only invoked if both arguments are ColorPoint instances at runtime. The use of dynamic types distinguishes multiple dispatch from static overloading (as found, for example, in Ada 83 [Ada 83] The semantics of sending messages to tuples, multiple dispatch, is similar to that in Cecil [Chambers 95] Consider the expression (E 1 , E n ) I(E n 1 , E m ) where each E i has value v i , and where T d,i is the minimal dynamic type of v i . A method in a tuple class (T 1 , T n ) is applicable to this expression if it is named I, if for each 1in, the dynamic type T d,i is a ....
[Article contains additional citation context not shown here]
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http://www.cs.washington.edu/ research/projects/cecil/www/Papers/cecil-spec.html
....Such single dispatching languages seem to be better modeled by models in which objects resemble records, and message passing is modeled by looking up a method in the object record. By contrast, the models we use resemble multiple dispatching OO languages such as CLOS [44] Dylan [48] and Cecil [11, 12]. The work of both authors was supported in part by NSF grant CCR 9593168. 1 In this paper we describe and relate these various kinds of models. In doing so we also establish some connections between class based single dispatching and multiple dispatching OO languages. We also describe the ways ....
Craig Chambers. The Cecil language specification and rationale: Version 2.0. Available from http://www.cs.washington.edu/research/projects/cecil/www/Papers/cecilspec. html, December 1995.
....type checking of files, but it neither provides the advanced language features mentioned above nor type safety. Java [Gosling et al. 96] guarantees type safety but does not do so completely statically, and it also does not provide any of the 3 advanced language features. Cecil [Chambers 92, Chambers 95] has the advanced language features and a strong, static type system, but it lacks support for separate type checking. We have developed Dubious, a small and highly uniform core language for understanding the interaction of these three design goals. Dubious aims to merge the encapsulation ....
....allow Castagna to guarantee 21 type safety of the calculus with only two restrictions, while giving up the generality which Dubious retains. Finally, the l calculus does not model first class modules. The syntax and semantics for multimethods is borrowed from Cecil [Chambers 92, Chambers 95] and from the work of Chambers and Leavens [Chambers Leavens 95] on type checking for multimethods. The ideas of extending and most extending modules are also products of their work. Dubious has the most in common with BeCecil [Chambers Leavens 96] its predecessor. Problems with ....
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995.
....programming. Similarly, early object oriented languages, such as Simula 67 [9] and Smalltalk [16] provide no module system. In contrast, languages such as Ada 95 [20] Common Lisp [42] Dylan [41] Haskell [19] Java [17] and Modula 3 [18] provide both modules and classes. For Cecil [4], Chambers and Leavens [5] designed a module system specifically to complement a class system with multi methods. Unfortunately, these module and class systems do not support external connections a central principle of our design that is crucial to software engineering (see Section 5) Scheme ....
Chambers, C. The Cecil Language Specification and Rationale: Version 2.0, 1995.
....et al. 96] Smalltalk 80 [Goldberg Robson 83] and Eiffel [Meyer 92, Meyer 97] selects a method using the dynamic class of one object, the message s receiver. Multiple dispatch, as found in CLOS [Chapter 28, Steele 90] Paepcke 93] Dylan [Shalit 97, Feinberg et al. 97] and Cecil [Chambers 92, Chambers 95] generalizes this idea, selecting a method based on the dynamic class of any subset of the message s arguments. Multiple dispatch is in many ways more expressive and flexible than single dispatch in object oriented (OO) programming [Bobrow et al. 86, Chambers 92, Castagna 97, Moon 86] In this ....
....class is only invoked if both arguments are ColorPoint instances at run time. The use of dynamic classes distinguishes multiple dispatch from static overloading (as found, for example, in Ada 83 [Ada 83] The semantics of sending messages to tuples, multiple dispatch, is similar to that in Cecil [Chambers 95] Consider the expression (E 1 , E n ) I(E n 1 , E m ) where each E i has value v i , and where C d,i is the minimal dynamic class of v i . A method in a tuple class (C 1 , C n ) is applicable to this expression if the method is named I, if for each 1in the dynamic class C d,i is a ....
[Article contains additional citation context not shown here]
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http:// www.cs.washington.edu/research/projects/cecil/www/ Papers/cecil-spec.html
....containing arbitrary multimethods to typecheck successfully in isolation but generate type errors when linked together. Previous work on statically typed multimethods has dealt with this problem either by forcing programs to be typechecked as a whole [Mugridge et al. 91, Castagna et al. 92, Chambers 95, Bourdoncle Merz 97, Castagna 97, Chambers Leavens 97, Leavens Millstein 98] or by sacrificing symmetric treatment of multimethod arguments to ensure the safety of modular typechecking [Agrawal et al. 91, Bruce et al. 95, Boyland Castagna 97] We have designed Dubious, a simple core ....
....declaration creates a fresh object with a unique, statically known identity and binds it to the given name. The declaration also names the objects from which the new object directly inherits (its parents) As in other classless languages [LaLonde et al. 86, Lieberman 86, Ungar Smith 87, Chambers 95, Abadi Cardelli 96] objects play the roles of both classes and instances, and the isa relation accordingly plays the roles of both inheritance and instantiation. For example, in the modules of figure 2, the colorPoint object represents a subclass of point that has a color, while the ....
[Article contains additional citation context not shown here]
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http:// www.cs.washington.edu/research/projects/cecil/www/ Papers/cecil-spec.html
.... (e.g. subclasses) and prevent encapsulation violations and clashes between independently developed extensions remains an important problem [Cook 90] We have been developing and experimenting with Cecil, an expressive and practical object oriented language based on multimethods [Chambers 92, Chambers 95] We have gained practical experience with programming in Cecil by writing an 80,000 line optimizing compiler, Vortex [Dean et al. 96] We recently presented a static type system, efficient typechecking algorithm, and module system for Cecil [Chambers Leavens 95] As part of our efforts to ....
....inherit. Point rep inherits any object CP rep CP rep inherits Point rep CP rep inherits Color rep We chose to make BeCecil simpler by not distinguishing the inheritance and instance of relationships. In this respect BeCecil resembles prototype based languages [Ungar Smith 87, Chambers92, Chambers 95, Blascheck 94, Abadi Cardelli 96] Since an instance of a class is just an object that inherits from the class, instances of classes are created just like subclasses. For example, one could declare an instance, myPoint, of Point rep as follows. object myPoint myPoint inherits Point rep ....
[Article contains additional citation context not shown here]
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http://www.cs.washington.edu/ research/projects/cecil/www/Papers/cecil-spec.html
....methods to existing classes, relieving the tension that has been observed by others [Cook 90, Odersky Wadler 97, Findler Flatt 98] between these forms of extension. Multiple dispatch, found in Common Lisp [Steele 90, Paepcke 93] Dylan [Shalit 97, Feinberg et al. 97] and Cecil [Chambers 92, Chambers 95] allows the method invoked by a message send to depend on the run time classes of any subset of the argument objects. A method that takes advantage of the multiple dispatch mechanism is called a multimethod. In contrast, single dispatch, found in C , Smalltalk, and Java, selects the method ....
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http:// www.cs.washington.edu/research/projects/cecil/www/Papers/ cecil-spec.html.
.... (e.g. subclasses) and prevent encapsulation violations and clashes between independently developed extensions remains an important problem [Cook 90] We have been developing and experimenting with Cecil, an expressive and practical object oriented language based on multimethods [Chambers 92, Chambers 95] We have gained practical experience with programming in Cecil by writing an 80,000 line optimizing compiler, Vortex [Dean et al. 96] We recently presented a static type system, efficient typechecking algorithm, and module system for Cecil [Chambers Leavens 95] As part of our efforts to ....
....inherit. Point obj inherits any object CP obj CP obj inherits Point obj CP obj inherits Color obj We chose to make BeCecil simpler by not distinguishing the inheritance and instance of relationships. In this respect BeCecil resembles prototype based languages [Ungar Smith 87, Chambers92, Chambers 95, Blascheck 94, Abadi Cardelli 96] Since an instance of a class is just an object that inherits from the class, instances of classes are created just like subclasses. For example, one could declare an instance, myPoint, of Point obj as follows. object myPoint myPoint inherits Point obj ....
[Article contains additional citation context not shown here]
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http://www.cs.washington.edu/ research/projects/cecil/www/Papers/cecil-spec.html
....modules containing arbitrary multimethods to typecheck successfully in isolation but generate type errors when linked together. Previous work on statically typed multimethods has dealt with this problem in one of two ways. Some designs ignore the modularity issue altogether [Mugridge et al. 91, Chambers 95, Chambers Leavens 97, Bourdoncle Merz 97, Castagna 97, Leavens Millstein 98] forcing programs to be typechecked as a whole. Other designs sacrifice symmetric treatment of multimethod arguments and some kinds of extensibility in order to ensure the safety of modular typechecking [Agrawal et ....
.... ) T Types C : N (S 1 , S n ) T Conformance Types S : T # T Specializer Types F : X N : T X : T Formal Arguments N : X X 1 X 2 (Qualified) Names X : identifier Identifiers Figure 1: Syntax of Dubious 3 Modular Statically Typed Multimethods Lieberman 86, Ungar Smith 87, Chambers 95, Abadi Cardelli 96] objects support both class like and instance like programming idioms, and inheritance also supports the instantiation idiom. For example, the point object acts like a class, the colorPoint object inherits from point and acts like a subclass, and the origin object inherits ....
[Article contains additional citation context not shown here]
Craig Chambers. The Cecil Language: Specification and Rationale: Version 2.0. Department of Computer Science and Engineering, University of Washington, December, 1995. http://www.cs.washington.edu/ research/projects/cecil/www/Papers/cecil-spec.html
No context found.
C. Chambers. The Cecil language specification and rationale: Version 2.0. Technical Report UW-CS Technical Report 93-03-05, Department of Computer Science and Engineering, University of Washington, December 1995.
No context found.
C. Chambers. The Cecil Language Specification and Rationale: Version 2.0, 1995.
No context found.
Craig Chambers. The Cecil language: Specification and rationale: Version 2.0. Technical report, Department of Computer Science and Engineering, University of Washington, Seattle, Washington, December 1995. http:// www.cs.washington.edu/research/projects/cecil/www/Papers/cecil-s%pec.html.
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