| G. Nelson. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, 1991. |
....dependencies that the module may have, the kind of adapatability required, so on and so forth. Protection must be enforced voluntary protection through principles of good programming practice is not good enough. Typically, the choice in such issues is between language enforced protection [Nelson, 91] Bershad, 95] protection though binary modification tools [Wahbe] or protection through explicit hardware provided guarantees [Mach4, 94] Dependencies between modules need to be made explicit and clearly specified. Largely speaking this is a resolved issue and is either done through an ....
Nelson, G., Systems Programming with Modula-3, Prentice Hall, Englewood Cliffs, NJ, 1991.
....by file names. Dynamic linking [4] is a scheme, where execution starts with a single compiled module definition and further module definitions are loaded and installed only once they are needed. The same module definition can be used by many different applications. Modula 2 [16] Modula 3 [10], Oberon [13] Objective Caml [8] and Java [2] are examples of languages that support modules and separate compilation. Oberon and Java also support dynamic linking. A module definition specifies a function that takes modules as arguments and returns a module. This observation relates module ....
....pickles the obtained functor. 2 To the best of our knowledge, these two application of first class modules and functors have not been proposed before. The same holds for our general pickling operation, which respects lexical scoping and accommodates first class procedures and functors. Modula 3 [10] has an implementation dependent pickling operation that accommodates first order data structures but breaks security invariants for procedures. Higher order module disciplines have been investigated thoroughly in the context of ML (e.g. 9, 15, 6, 7] This work focuses on expressive static type ....
[Article contains additional citation context not shown here]
G. Nelson, editor. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, New Jersey, 1991.
....citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and or a fee. ICFP 99 9 99 Paris, France 1999 ACM 1 58113 111 9t99 0009. 00 rameterized modules, also known as functors. Unlike Modula 3 genetics [30] or C templates [37] ML functors can be typechecked and compiled independently at its definition site; furthermore, different applications of the; same functor can share a single copy of the implementation (i.e. object code) even though each application may produce modules with different ....
G. Nelson, editor. Systems programming with Modula-3. Prentice Hall, Englewood Cliffs, NJ, 1991.
....The goal was to determine which characteristics of protection had the biggest impact on performance. Software based protection is implemented by either applying software fault isolation to the test application and the library, or by writing the entire application and library in Modula3 [Nelson 91] For hardwarebased protection schemes, the entire library is embedded in the kernel, encapsulated as a process or built as a protected shared library (PSL) Banerji 94] 2.1 No protection To establish a baseline, all tests were conducted using no protection between the client and service ....
....alternatives to hardware based protection have been proposed. Software Fault Isolation, one such software mechanism, is reported to introduce low enough overheads to be useful for safe kernel extensions [Wahbe 93] Yet another alternative is to use strongly typed languages, like Modula3 [Nelson 91] Bersh 95] and Java [Gosling 96] Although the overall cost of well known protection schemes has been reported, in depth relative analyses of how and why each scheme adds overhead cycles are not available. Work is beginning to appear on this question [Small 96] but a full analysis is still ....
G. Nelson, ed, System Programming with Modula 3, Prentice Hall, 1991.
....that will kill the child if the parent is interrupted. Indeed, programming in the presence of asynchronous exceptions is notoriously dicult, so much so that Modula 3, for example, simply outlaws them. Instead, well behaved threads regularly poll an alert ag, and commit suicide if it is set [33]. Haskell di ers from Modula in two ways that are relevant here. First, there are fewer side e ects, so there are fewer windows of vulnerability to worry about. Second, there are large parts of purely functional code that we would like to be able to interrupt and can indeed do so safely but ....
Nelson, G., Ed. Systems Programming with Modula-3. Prentice Hall, Englewood Clis, NJ, 1991.
....that will kill the child if the parent is interrupted. Indeed, programming in the presence of asynchronous exceptions is notoriously difficult, so much so that Modula 3, for example, simply outlaws them. Instead, well behaved threads regularly poll an alert flag, and commit suicide if it is set [33]. Haskell differs from Modula in two ways that are relevant here. First, there are fewer side effects, so there are fewer windows of vulnerability to worry about. Second, there are large parts of purely functional code that we would like to be able to interrupt and can indeed do so safely ....
NELSON, G., Ed. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, NJ, 1991.
....C # can write ambiguous function cases that appear to be disjoint, and therefore pass static checks, if the fact that C subclasses C # is hidden from the client. It would also be useful to ascribe a class declaration to a type declaration, possibly augmented with Modula 3 style partial revelations [22] to reveal some of the class s underlying structure. 5.3 Functors In the presence of EML s features, functors can provide a great deal of flexibility. Figure 19 illustrates the kinds of idioms we would like to express. The Colorize functor implements a form of mixin [4, 10, 13] which is a class ....
G. Nelson. Systems Programming with Modula-3. Prentice Hall, 1991.
....based on an LL(1) parser. One can define entirely new grammars, or enrich the existing F sub grammar. In particular, one can define new binding constructs and their associated meaning, while avoiding problems with variable capture. The F sub system consists of about 10,000 lines of Modula 3 code [Nelson 1991], equally partitioned between a reusable parsing package and F sub proper. The implementation is portable to any computer running Modula 3, that is to almost any computer running a standard C compiler [Kalsow, Muller FTP] Program sources and binaries for standard architectures are freely ....
G. Nelson, ed. Systems Programming with Modula-3. Prentice Hall.
....could be used to experiment in the design and implementation of agent place paradigms [White 1994] using the basic techniques of section 5. Related Work Obliq s features and application domains overlap with programming languages such as ML [Milner, Tofte, Harper 1989; Reppy 1991] Modula 3 [Nelson 1991], and Self [Ungar, Smith 1987] with scripting languages such as Tcl [Ousterhout 1994] AppleScript [Apple 1993] VBA [Brockschmidt 1994; Mansfield 1994] and Telescript [White 1994] and with distributed languages such as Orca [Bal, Kaashoek, Tanenbaum 1992] Fortd [Fond 1994] and Facile ....
G. Nelson, ed. Systems programming with Modula-3. Prentice Hall.
....could be used to experiment in the design and implementation of agent place paradigms [White 1994] using the basic techniques of section 5. Related Work Obliq s features and application domains overlap with programming languages such as ML [Milner, Tofte, Harper 1989; Reppy 1991] Modula 3 [Nelson 1991], and Self [Ungar, Smith 1987] with scripting languages such as Tcl [Ousterhour 1994] AppleScript [Apple 1993] VBA [Brockschmidt 1994; Mansfield 1994] and Telescript [White 1994] and with distributed languages such as Orca [Bal, Kaashoek, Tanenbaum 1992] Fort6 [Fort6 1994] and Facile ....
G. Nelson, ed. Systems programming with Modula-3. Prentice Hall.
....at once. Where in doubt, we have given precedence to flexible mechanism over robust methodology, hoping that methodology will develop with experience. 6. 1 Related Work Obliq s features and application domains overlap with programming languages such as ML [Milner, Tofte, Harper 1989] Modula 3 [Nelson 1991], and Self [Ungar, Smith 1987] with scripting languages such as Tcl [Ousterhout To appear] AppleScript [Apple 1993] and Telescript [White 1994] with distributed languages such as Orca [Bal, Kaashoek, Tenenbaum 1992] and Fort6 [Fort6 1993] and with user interface languages such as Visual Basic ....
G. Nelson, ed. Systems programming with Modula-3. Prentice Hall.
....The extensible operating systems such as SPIN [2] and VINO [8] alleviate the di#culty of debugging distributed file systems by allowing the users to install an extension module into the kernel on demand. These systems provide a certain fixed level of fail safety using type safe language Modula 3 [4] and software fault isolation [9] respectively, but it is not appropriate in all phases of the development of file systems. This paper has described the CAPELA operating system, which makes distributed file systems easy to develop. In CAPELA, a new file system is implemented as an extension ....
G. Nelson. System Programming with Modula-3. Prentice Hall, 1991.
....some form of polymorphism) type checking is based fundamentally on a subtyping relation, instead of an equivalence relation. Subtyping is not, necessarily, anti symmetric, since two distinct types may be subtypes of one another. For example, packed and an unpacked types in Modula 3 [CDJ 89, Nel91] Usually packed and unpacked data have different representations, and there is a conversion from one to the other. The subtyping relation between type expressions depends, in general, on a conversion relation between the set of values of these types. It must be possible to convert values of a ....
G. Nelson. Systems Programming with Modula-3. Prentice Hall, 1991.
....for files in the monolithic kernel. However, if the file server calls the Mach kernel, the context switch happens four times even at the minimum. 2.2.3 Extensible kernel SPIN, which is one of extensible kernels, can describe a file system as an extension. The extension is written in Modula 3 [14], which is a general purpose programming language with interfaces, objects and type safety. For these features, it is safe that the kernel executes the extension written in Modula 3. The extension is linked to the kernel dynamically after the kernel boots, and executed in the kernel space. 9 ....
Nelson, G., System Programming with Modula-3. Innovative Technology, Prentice Hall, 1991. ISBN 0-13-590464-1.
....original stack based packet filter and is up to 20 times faster. The dynamic packet filter (DPF) 10] uses dynamic code generation and is 10 to 50 faster than the other fastest packet filters. The SPIN operating system [4] allows the users to download the extension modules written in Modula 3 [27] into the kernel. Modula 3 is a type safe language and does not cause memory access violation at runtime. Although Modula 3 is a general language and enables programmers to write most functions of operating systems, the facility of type safeness may restrict the programming or su#er extra ....
Nelson, G., System Programming with Modula-3. Prentice Hall, 1991.
....function remotely, and returns the remote result as a local object store value. let remoteOps = rpcClient.bind(remoteDBService) Since this matching is based on structural type equivalence, it is not important that the same type identifier DBOps is used at the client and server site [Nel91] Fifth International Workshop on Database Programming Languages, 1995 5 Scaling Database Languages to Higher Order Distributed Programming The following examples demonstrate that remoteOps gives fully transparent access to the (higher order) remote functions. let john = tuple John Smith 36 ....
G. Nelson, editor. Systems programming with Modula-3. Series in innovative technology. Prentice Hall, Englewood Cliffs, New Jersey, 1991.
....could solve this problem: use id : T as id in S Within S, the dynamic variable id would be accessed as id in order to avoid conflicts with other uses of id in the context in which the use statement appears. This extension is similar to the way Modula 3 provides aliases for imported interfaces [8]. Finally, object oriented languages usually include predicates for testing types, e.g. Java s instanceof, which suggests that a similar predicate for testing the existence of dynamic variables might be useful, e.g. isdynamic(id, T) would return true if id is a dynamic variable of type T or a ....
Nelson, G. Systems Programming with Modula-3. Englewood Cliffs, N.J.: Prentice-Hall. 1991. www.research.compaq.com/SRC/m3defn/html/m3.html.
....into larger objects, 6 (5) object modification: whether an individual object can modified and what are the side effects. An object has to be created first before any application. Object can be created in many ways. In classbased languages like C [28] Java [3] Eiffle [22] and Modula 3 [23], objects are instantiated from classes. In object based languages, e.g. Cecil [11] Self [30] and Omega [6] objects are created by cloning and extension of prototypical objects without the existence of classes. Apparently, how an object is created does not necessarily affect how an object is ....
G.Nelson, Systems Programming with Modula-3, Prentice Hall, Englewood, 1991.
....the execution of object implementations. When warranted, object servers can be started up or shut down. As our platform for distributed objects, we use the network object system [1] provided with the Digital Equipment Corporation System Research Center distribution of the Modula 3 (M3) language [2]. Given that this implementation platform does not support object activation, we have designed an activation protocol to address that need. We identify several important goals for our activation protocol: flexible mechanism enabling implementations of a variety of activation models; simple ....
Nelson, Greg (ed.), Systems Programming with Modula-3, Prentice Hall (1991).
....and structured way to support parallelism in a programming language. However, the compiler should choose how many of the eligible statements should actually be executed concurrently, depending on the granularity of statements and the overhead of parallel execution. Some languages, like Modula 3 [Nelson 1991], present a fairly low level view of threads. A thread is started by a call to a fork procedure, which returns a thread identifier that can be used later for synchronization. Fork takes a procedure parameter that tells the thread what to execute. Sequential languages, like C or C do not provide ....
Nelson G., Systems Programming with Modula-3, Prentice Hall, 1991.
....(D.I.I. As shown in Section 3 of this report, the mapping described here does not meet al..l the requirements for a mapping from the CORBA architecture to a programming language. Therefore this report does not constitute a full fledged proposal for mapping to the programming language Modula 3 [2]. 1.1 Copyright and Permissions Copyright 1994 GTE Laboratories Incorporated. All rights reserved. Permission is granted for anonymous ftp, electronic viewing, and single copy printing. Permissible uses are research and browsing. Specifically prohibited are sales of any copy, whether electronic ....
.... IDL.Exception ; END; The unshown implementation for object methods would marshal the parameters of their operations and call an underlying message handling routine (acting as an ORB) To allow Modula 3 modules implementing methods to conform to the Modula 3 language definition (section 2.5. 3 of [2]) 2 , in the case where an IDL interface s name matches the name of the IDL file where it is defined, the name of the interface object in the corresponding Modula 3 interface will be T. This prevents problems and adheres to the Modula 3 programming convention wherein the principal type , i.e. ....
[Article contains additional citation context not shown here]
G. Nelson, ed, Systems Programming With Modula-3, Prentice Hall, Englewood Cliffs, New Jersey, 1991, ISBN 0-13-590464-1.
....be therefore easy to understand, maintain and reuse. A number of exception mechanisms exist in both experimental and actual object oriented programming languages. Realistic examples of object oriented languages 2 include Java [Arnold and Gosling, 1998] C [Koening and Stroustrup, 1990] Modula 3[Nelson, 1991] and Eiffel [Meyer, 1988] The purpose of our paper is to investigate the applicability of the existing exception mechanisms of object oriented programming languages for developing dependable object oriented software with effective quality attributes. The major contributions of this article are: ....
....1980s, object oriented languages opened to developers a new way of system design based on novel approaches to system modularisation and reuse. Since then, exception handling mechanisms have been integrated into mainstream object oriented languages such as Java [Arnold and Gosling, 1998] Modula 3 [Nelson, 1991] and Eiffel [Meyer, 1988] In this section we will briefly overview a series of existing exception mechanisms found in different object oriented languages. The taxonomy proposed in Section 3 is used to evaluate and compare these mechanisms. Figure 1 in Section 5 summarises the characteristics of ....
[Article contains additional citation context not shown here]
Nelson, G., Systems Programming with Modula-3, Prentice Hall, 1991.
....on accesses (so that a program never indexes outside the bounds of an array) and ensuring (either at compile time or at run time) that, when assigning a value to a variable, the value is of an appropriate type. Examples of safe languages that have been used for systems programming are Modula 3 [Nelson91], Oberon [Mssenbck94] and Java [Gosling96] Even with all of these additional features, safe languages can perform as well, or nearly as well, as unsafe languages such as C; for example, the performance overhead of Modula 3 relative to compiled C or C is negligible [Sirer96] Many required ....
Nelson, G., ed., Systems Programming with Modula-3, Prentice Hall, Englewood Cliffs, NJ (1991).
....T executes S and upon termination exceptional or normal executes T : Transposition S is the statement that terminates just when S does, and upon termination inverts oc: We can implement S as j[ var b : boolean; S ; b : true) b : false; if b then raise fi ]j . JAN 185 15 Modula 3 [7] is an example of a programming language with exceptions. In addition to the construct, it has a so called try finally statement. Execution of try S finally T end consists of the execution of S followed by the execution of T : If the execution of S terminates exceptionally, then execution of T ....
....herein and existing programming languages. We find that usual programming languages introduce an asymmetry between left and right composition. For example, statements begin their execution in a normal state, is often much longer to type than ; and may not be as efficient as ; see e.g. [7]) However, the properties presented in this note suggest a more symmetric treatment of ; and . 7 A programming method From the weakest precondition semantics given for a program notation, one often derives some theorems that are used in reasoning about programs. Ideally, they suggest hints ....
G. Nelson, editor. Systems Programming with Modula-3. Prentice-Hall, 1991.
....3 1.3 Our Approach To prove the thesis statement, features of modern languages can be fast without expensive optimizations, we have taken the following three step approach: 1. Design practical techniques to reduce the overhead of features of modern programming languages, such as Modula 3 [81]. 2. Evaluate the techniques to show that they improve performance. 3. Compare the techniques to an upper bound for the problem. If in the last step we find that our techniques are close to perfect then we have effectively demonstrated that we can not only reduce but, in fact, remove the ....
....powerful analysis would convert at most 7 more method invocations to direct calls compared to our analyses. 1.4 Structure of the Dissertation The remainder of this dissertation has the following structure: ffl Chapter 2 describes method invocations and objects in more detail. It uses Modula 3 [81] as an example of a modern language. This chapter also discusses the implications of the features of modern programming languages on performance and optimizers. ffl Chapter 3 describes an infrastructure, our whole program optimizer (WPO) for experimenting with compiler optimizations for modern ....
[Article contains additional citation context not shown here]
Nelson, G., editor. Systems Programming with Modula-3. Prentice Hall, New Jersey, 1991.
....on common object oriented jargon. To avoid ambiguity, we call pre methods those functions that become methods once embedded into objects. We take the point of view that inheritance means pre method reuse, and that classes are collections of interdependent reusable pre methods. As in Modula 3 [Nelson 1991], we make methods reusable by writing them first as functions (that is, as pre methods) and then by repeatedly embedding these functions into objects. The key idea is that if A7[l i :B i1. n ] is an object type, then: Class(A) l i :AB i i1. n ] can be seen as a class type. A class (that ....
....of the modified method would not depend on the type of self, and P 1 and P 2 would not be recursive. Even in imperative languages, though, we often find methods that, like mv x, allocate new objects of the type of self and return them. In many programming languages, such as Simula 67 and Modula 3 [Nelson 1991], the failure of P 2 :P 1 is avoided by not allowing a subclass to change the type of a method of a superclass. For example, in our calculus, we could define mv x to return P 1 even when embedded in P 2 : P 1 (X) x:Int, mv x:IntX] P 2 (X) x,y:Int, mv x:IntP 1 , mv y:IntX] UP 1 [x:Int, ....
G. Nelson, ed. Systems programming with Modula-3. Prentice Hall.
....ignoring byte boundaries; and the same applies to consecutive entries of the vector. With this encoding, the binary automaton for Portuguese, after Fold, was reduced to only 67,898 bytes about 63 of the fixed length representation above. 6 Experimental Results We chose the language modula 3[10] to implement our environment. Our software represents the binary automata by a vector, as described in Section 2.4. All binary automata produced by our software are minimal in the following sense: no two states have the same triple (l; s; f) or, equivalently, common sublists are merged. 12 ....
Nelson, G., editor. System Programming with Modula-3. Prentice Hall, 1991.
....cannot be completely automated. No matter how good a program may be at identifying likely errors, it can only make suggestions, whose validity must eventually be judged by a human expert. 2 Programming environment and tools All the software described here was implemented in the language Modula 3 [7, 3], developed at the Systems Research Center of the Digital Equipment Corporation. The main reasons for this choice were the simplicity of the language, its object oriented programming paradigm and its availability on most unix workstations. 2.1 Basic library Our debugging tools are built on top ....
Nelson, G. (ed.), System Programming with Modula-3, Prentice Hall, 1991. 12
....on common object oriented jargon. To avoid ambiguity, we call pre methods those functions that become methods once embedded into objects. We take the point of view that inheritance means pre method reuse, and that classes are collections of interdependent reusable pre methods. As in Modula 3 [17], we make methods reusable by writing them first as functions (that is, as pre methods) and then by repeatedly embedding these functions into objects. The key idea is that if A7[l i :B i i1. n ] is an object type, then: Class(A) new:A, l i :AB i i1. n ] class A [new=V(c:Class(A) l ....
Nelson, G., ed. Systems programming with Modula-3. Prentice Hall. 1991.
....defined object types that arise commonly [15, 24] This failure of subtyping is necessary for soundness. The standard, pragmatic solution is to weaken type definitions so that subtyping is achieved, and to use dynamic type tests to recover lost type information (as for example in Modula 3 [34]) A better solution is to employ Self types (as in [4, 5] but this helps only for covariant occurrences of recursion variables (e.g. not for binary methods [11] Recently, a relation between recursive object types, called matching, has been proposed to circumvent this problem [14] Unlike ....
Nelson, G., ed. Systems programming with Modula-3. Prentice Hall. 1991.
....The inconsistency of name matching rules becomes a problem in distributed environments, where type definitions and data may migrate outside the compiler or program run in which they are created. Types and data should have a meaning independent of particular runs, hence languages such as Modula 3 [22] and other experimental languages such as Amber [10] and Quest [9, 12] concerned with data persistence and data migration, have again adopted structural matching. Since these languages also rely on subtyping, structural subtyping becomes an issue. Because of various language design issues, ....
G.Nelson (ed.): Systems Programming with Modula-3, Prentice Hall, 1991.
....though M Lib matches I Lib , M Usr matches I Usr , and I Usr matches I Lib , it may be the case that P Usr produces runtime type errors. In Eiffel, for example, separate typechecking of classes does not imply that the whole program is type safe [8, 16] Some mechanisms (Modula 3 s revelations [18], Standard ML s smartest recompilation [21] Eiffel s proposed link time safety analysis) delay some type checks until link time: the user may discover at that point internal inconsistencies in the libraries. The linked program should have the same effect as a program obtained by merging all the ....
Nelson, G., ed. Systems programming with Modula-3. Prentice Hall. 1991.
....could be used to experiment in the design and implementation of agent place paradigms [White 1994] using the basic techniques of section 5. Related Work Obliq s features and application domains overlap with programming languages such as ML [Milner, Tofte, Harper 1989; Reppy 1991] Modula 3 [Nelson 1991], and Self [Ungar, Smith 1987] with scripting languages such as Tcl [Ousterhout 1994] AppleScript [Apple 1993] VBA [Brockschmidt 1994; Mansfield 1994] and Telescript [White 1994] and with distributed Page 28 May 30, 1995 11:18 PM languages such as Orca [Bal, Kaashoek, Tanenbaum 1992] Fort ....
G. Nelson, ed. Systems programming with Modula-3. Prentice Hall.
....to de mystifying concurrency. Precisely because C and C allow nothing to be swept under the covers, concurrency may be easier to understand (although harder to use) in these programming languages than in those explicitly designed for concurrency, such as Ada [Mundie Fisher 1986] Modula 3 [Nelson 1991], and Concurrent Euclid [Holt 1983] Second, a working thread system, as in Nachos, allows students to practice writing concurrent programs and to test out those programs. Even experienced programmers find it difficult to think concurrently; a widely used OS textbook had an error in one of its ....
Nelson, G., editor. Systems Programming with Modula-3. Prentice Hall, 1991.
....An important part of all these models of object oriented languages is the data type record. The record based model of object oriented languages introduced by Cardelli [3] provides a framework for strongly typed object oriented languages. This model has played a role in the development of Modula 3 [13] and is similar to the approach taken in C [9] All of the models discussed here are refinements of the record based model of Cardelli. 2 Modeling Object Oriented Languages Among the distinguishing features of object oriented languages is that data values are organized into a hierarchy of ....
G. Nelson, editor. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, New Jersey, 1991.
....or implied, of the Defense Advanced Research Projects Agency or the U.S. Government. To appear in ICFP 99: Proceedings of the 1999 ACM SIGPLAN International Conference on Functional Programming, September 1999, Paris, France. rameterized modules, also known as functors. Unlike Modula 3 generics [28] or C templates [35] ML functors can be typechecked and compiled independently at its definition site; furthermore, different applications of the same functor can share a single copy of the implementation (i.e. object code) even though each application may produce modules with different ....
G. Nelson, editor. Systems programming with Modula-3. Prentice Hall, Englewood Cliffs, NJ, 1991.
....The object constructs in OML also have efficient constant time implementations; there are no hidden costs, such as dynamic searching for methods. Outside of the theoretical community, most statically typed object oriented languages have only first order functions, e.g. C [Str94] or Modula 3 [Nel91] Even with this limitation on functions, the type systems often are too inflexible to support the object oriented idioms found in dynamically typed languages like CLOS [Ste90] Dylan [App92] Obliq [Car95] Self [US87] or Smalltalk [GR83] This inflexibility is overcome by using some form of ....
....dx = PT2 x p1) PT2 x p2) val dy = PT2 y p1) PT2 y p2) in sqrt (dx dx dy dy) end Most accesses to members in programs use the derived form rather than full pattern matching. Pattern matching on object constructors provides a form of typecase on objects, similar to that found in Modula 3 [Nel91] For example consider the following expression: case pt of CPT1 . print color point n PT1 . print point n If pt is a cpoint1 (or some subtype of cpoint1) then the first case is matched. Otherwise the second case is matched (for example, if pt is a point2) Note that if ....
Nelson, G. (ed.). Systems Programming with Modula-3. Prentice-Hall, Englewood Cliffs, N.J., 1991.
....with the behavior of the objects of the two types: the objects of the subtype ought to behave the same as those of the supertype as far as anyone or any program using supertype objects can tell. For example, in strongly typed object oriented languages such as Simula 67[DMN70] C [Str86] Modula 3[Nel91] and Trellis Owl[SCB 86] subtypes are used to broaden the assignment statement. An assignment x: T : E is legal provided the type of expression E is a subtype of the declared type T of variable x. Once the assignment has occurred, x will be used according to its apparent type T, with the ....
.... research on defining subtype relations is concerned with capturing constraints on method signatures via the contra covariance rules, such as those used in languages like Trellis Owl [SCB 86] Emerald[BHJ 87] Quest [Car88] Eiffel [Mey88] POOL [Ame90] and to a limited extent Modula 3 [Nel91] Our rules place constraints not just on the signatures of an object s methods, but also on their behavior. Our work is most similar to that of America [Ame91] who has proposed rules for determining based on type specifications whether one type is a subtype of another. Meyer [Mey88] also uses ....
Nelson, G. Systems Programming with Modula-3. Prentice Hall, 1991.
No context found.
G. Nelson. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, 1991.
No context found.
G. Nelson, editor. Systems programming with Modula-3. Prentice Hall, 1991.
No context found.
G. Nelson, editor. Systems Programming with Modula-3. Prentice Hall, New Jersey, 1991.
No context found.
G. Nelson. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, 1991.
No context found.
G. Nelson. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, 1991.
No context found.
G. Nelson, editor. Systems Programming with Modula-3. Prentice Hall, 1991.
No context found.
G. Nelson, ed., Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, NJ, 1991.
No context found.
G. Nelson, editor. Systems Programming with Modula-3. Prentice Hall, 1991. (p. 5)
No context found.
Nelson, G., ed. Systems programming with Modula-3. Prentice Hall. 1991.
No context found.
G. Nelson, editor. Systems Programming with Modula-3. Prentice-Hall, 1991.
No context found.
G. Nelson, Ed., Systems Programming with Modula-3, ser. Series in Innovative Technology. Prentice-Hall, 1991.
No context found.
G. Nelson, ed. Systems Programming with Modula-3. Prentice Hall.
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