| X. Leroy and M. Mauny. Dynamics in ML. In Hughes [13]. |
....more injection and projection functions than a Lisp program. A more interesting use of dynamic types is for programs that wish to do type safe, structured input output, which is problematic in Standard ML. Within the ML community, the type dynamic has been proposed as a solution to this problem[22]: values of type dynamic would carry full ML style types as part of their runtime representation, and could be coerced into ordinary statically typed values with a runtime check. ffl Edinburgh ML 4.0, from the University of Edinburgh (lfcs ed.ac.uk) ANU ML, from the Australian National ....
Xavier Leroy and Michel Mauny. Dynamics in ml. In J. Hughes, editor, Functional Programming Languages and Computer Architecture: 5th ACM Conference (LNCS 523), pages 406--426. SpringerVerlag, 1991.
....to HEMS and because of concerns about complexity chose to put each extraction operation in a separate packet. More recently, a set of platform independent programming languages, most notably Java [Gosling et al. 1996; Arnold and Gosling 1997] PLAN [Hicks et al. 1998] and CAML [Leroy 1996a; Leroy and Mauny 1993; Leroy 1996b] have been created. These program languages are designed to be transmitted across the network, between machines. However, if the HEMS language was too simple, the newer languages are too rich for reasons discussed in more detail in section 4.1. 2. SYSTEM ARCHITECTURE The Smart ....
Leroy, X. and Mauny, M. 1993. Dynamics in ML. Journal of Functional Programming 3, 4, 431-463.
....virtual machine [Liang and Bracha 1998] Java has the problem of a weak MIL. On the other hand, ML has a powerful MIL but no support for dynamic linking. The current work was motivated by the desire to bridge this gap. Work on dynamic linking in ML has focussed on dynamic types [Abadi et al. 1991; Leroy and Mauny 1993; Abadi et al. 1992; Shields et al. 1998; Duggan 1999] With these approaches a dynamic value tags a value with a runtime type tag, of type Dynamic. This is similar to our approach to dynamic linking, but extended to modules rather than simple values, as a way of reifying modules into the core ....
Leroy, X. and Mauny, M. 1993. Dynamics in ML. Journal of Functional Programming 3, 4, 431--463.
....on values of type Dynamic is to inspect its type component and to bind a variable of that type to its value component. Since values of type Dynamic contains their types, they can be safely exported to an external store and later be retrieved and used in a static type system. The recent studies [LM91, ACPR92] showed that the mechanism of dynamic types can be extended to polymorphic languages. When we combine this mechanism with our mechanism of transparent communication, then we can achieve a persistent system that can be shared in a heterogeneous environment. In an explicitly typed version ....
X. Leroy and M. Mauny. Dynamics in ML. In Proceedings of the ACM Conference on Functional Programming Languages and Computer Architecture, 1991.
....to extract large amounts of data from a node. It does not allow general programming, it gives the packet no control over where it is sent, and places no limits on the size of a query. More recently, a set of platform independent programming languages, most notably Java [12] 13] and CAML [14] [15], 16] have been created. These program languages are designed to be transmitted across the network, between machines. However, if the HEMS language was too simple, the newer languages are too rich for reasons discussed in more detail in section 4.1. II. System Architecture The Smart Packets ....
Xavier Leroy and Michel Mauny, "Dynamics in ML," Journal of Functional Programming, vol. 3, no. 4, pp. 431--463, 1993.
....important feature of functional programming languages. We explain in this section how dynamic types and ad hoc polymorphism can be provided in ELAN, thanks to a module any available in the library. 8.1. Dynamic types Let us rst explore an idea based on a simple sort construction called dynamics [27], or dynamic typing [1, 20] which allows to de ne functions that essentially require run time type checking in statically typed language. A weakness of static typing can be eliminated by the construction of objects with dynamic types (or dynamics, for short) 28] or by the introduction of an ....
....dynamic types (or dynamics, for short) 28] or by the introduction of an advanced polymorphic system [31] Both methods were combined in [8] where the concept of dynamics is generalized into dependent data types. Another approach combining dynamics and the parametric polymorphism is studied in [27] from the point of the type inference. The de nition type Any = t : Type; x : t) introduces a sort Any (called dyn in [27, 1] which is the simplest example of a dependent data type. The rst part 20 of the pair Any indicates the sort of the second part. This means that the type t ranges over ....
[Article contains additional citation context not shown here]
X. Leroy and M. Mauny. Dynamics in ml. In J. Hughes, editor, Functional Programming Languages and Computer Architecture, volume 523 of Lecture Notes in Computer Science, Cambridge, MA, USA, august 1991. Springer-Verlag.
....which exhaust the infinitely many types a dynamic value could have. Mycroft proposed an extension of ML[6] by dynamic values. Actually, a version of dyn has been built into CAML[5] The background of this implementation and alternative designs for adding dynamics to ML are treated by Leroy Mauny[8]. Other This work has been supported by the Esprit Working Group BRA 7232, GENTZEN. languages like L. Cardelli s[3] AMBER also have dynamic values. In fact, the implementation of AMBER took advantage of treating compiled modules as dynamic values. M. Abadi, L. Cardelli, B. Pierce and G. ....
....of simply typed calculus, Abadi e.a. 1] work in the ideal model of D. MacQueen, G. Plotkin and R. Sethi[9] and define [ dyn] recusively by mimicking the construction of types over the set of pairs hv; i. However, for the combinations of dyn with polymorphic languages, suggested in [1, 2] and [8], no denotational semantics was known so far. Our main concern is to extend the model of Abadi e.a. 1] to cover recursive types ff: as well, such as the trees and lists of real programming languages. When recursive types are present, the method of defining [ dyn] by mimicking the construction ....
[Article contains additional citation context not shown here]
X. Leroy and M. Mauny. Dynamics in ML. In Conf. on Functional Programming Languages and Computer Architecture. Cambridge, Massachusetts, August 1991, pages 406--426. Springer LNCS 523.
.... ) A b : A Phi x : a : A let x = b in a : Let E ) A a 1 : 8 ffl ff: 0 a 1 6j b A Phi x : 8 ffl: 0 )f = ffg a 2 : A let x = a 1 in a 2 : This restriction to principal judgments is not new: it has already been used for the typing of dynamics in ML [7] or value only polymorphism in Standard ML 96 to disallow monomorphic variables at toplevel. In the former case, the program x: dynamics x) is rejected because, in the principal judgment x : ff x : ff, some variable of the type of x occurs free in the context. Similarly, x: x) x: x) fails ....
Xavier Leroy and Michel Mauny. Dynamics in ML. In John Hughes, editor, Conference on Functional Programming and Computer Achitecture, volume 523 of Lecture Notes in Computer Science, pages 406--426. Springer-Verlag, 1991.
....[7, 31, 27] which is used by some compilers [31, 28] to support efficient data representation, also requires the propagation of type information into the target code. Runtime type information is also crucial to the implementation of tag less garbage collection [32] pickling, and type dynamic [15]. This research was sponsored in part by the DARPA ITO under the title Software Evolution using HOT Language Technology , DARPA Order No. D888, issued under Contract No. F30602 96 2 0232, and in part by an NSF CAREER Award CCR9501624, and NSF Grant CCR 9633390. The views and conclusions ....
X. Leroy and M. Mauny. Dynamics in ML. In The Fifth International Conference on Functional Programming Languages and Computer Architecture, pages 406--426, New York, August 1991. Springer-Verlag.
....constructor list which indexes a family of list types int list, string list, int list) list, etc. It should be possible to transmit a list value, encapsulated as a dynamic, to a server which can unbundle the dynamic in such a way that it can operate on the elements of the list. Leroy et al. (Leroy and Weiss 1991; Leroy and Mauny 1993) and Abadi et al. 1992) have considered an extension of dynamics to allow this, allowing type variables in the patterns of the rules of the typecase: fun print (x : dynamic) typecase x of ( a list) xs) puts [ print (dynamic (hd xs) app (fn x ) puts , print ....
.... (dynamic x, chan) fun print (x: dynamic) typecase x of int (xi) output (makestring xi) j string (xs) output xs fun printServer chan = print (intern chan) printServer chan ) This example uses the typecase construct proposed by Abadi et al. 1991) and used implicitly by Leroy et al. (Leroy and Weiss 1991; Leroy and Mauny 1993) The server loop reads a value from the input channel as a dynamic, and then uses a typecase to check the type tag on the value. Using our construct for type dispatched methods, we can then write the server code as follows, where we provide alternative types for the ....
[Article contains additional citation context not shown here]
Leroy, X. and P. Weiss (1991). Dynamics in ML. In Proceedings of ACM Symposium on Functional Programming and Computer Architecture.
....indexes a family of list types int list, string list, int list) list, etc. It should be possible to transmit a list value, encapsulated as a dynamic, to a server which can unbundle the dynamic in such a way that it can operate on the elements of the list. Leroy et al. Leroy and Weiss 1991; Leroy and Mauny 1993) and Abadi et al. 1992) have considered an extension of dynamics to allow this, allowing type variables in the patterns of the rules of the typecase: fun print (x : dynamic) typecase x of ( a list) xs) puts [ print (dynamic (hd xs) app (fn x ) puts , print (dynamic x) tl xs) ....
.... fun print (x: dynamic) typecase x of int (xi) output (makestring xi) j string (xs) output xs fun printServer chan = print (intern chan) printServer chan ) This example uses the typecase construct proposed by Abadi et al. 1991) and used implicitly by Leroy et al. Leroy and Weiss 1991; Leroy and Mauny 1993). The server loop reads a value from the input channel as a dynamic, and then uses a typecase to check the type tag on the value. Using our construct for type dispatched methods, we can then write the server code as follows, where we provide alternative types for the message passing operations, ....
[Article contains additional citation context not shown here]
Leroy, X. and M. Mauny (1993). Dynamics in ML. Journal of Functional Programming 3(4), 431--463.
....on Persistent Languages In this section, a number of persistent languages with features related to the work presented in this thesis are discussed. Where appropriate, similarities and differences between these languages and the Staple system are noted. 1.4. 1 Amber and CAML Amber [Card85] and CAML [Lero91] are non lazy applicative languages which support persistence by providing functions to export and import values to the file system. In common with Staple, the values to be made persistent must be of a special dynamic type. When a value of the dynamic type is to be used, a run time type check is ....
....would be that the view type is an instance of the creation type. One type, S, is an instance of another, T, if there is a substitution for the type variables in T which results in the type S. This requires a relatively expensive instance check operation at run time. This option is found in CAML [Lero91]. An alternative to this is to require that the view type is the same as the creation type which can be performed more quickly at run time. Staple uses this approach. Napier88 [Morr89] uses a similar approach, but also supports abstract data types. The latter choice requires some definition of ....
Leroy, X. and Mauny, M., Dynamics in ML, In LNCS 523, SpringerVerlag, 1991, pp.406-426
.... ) A b : A Phi x : a : A let x = b in a : Let E ) A a 1 : 8 ffl ff: 0 a 1 6j b A Phi x : 8 ffl: 0 )f = ffg a 2 : A let x = a 1 in a 2 : This restriction to principal judgments is not new: it has already been used for the typing of dynamics in ML [6] or value only polymorphism in Standard ML 96 to disallow monomorphic variables at toplevel. In the former case, the program x: dynamics x) is rejected because, in the principal judgment x : ff x : ff, some variable of the type of x occurs free in the context. Similarly, x: x) x: x) fails ....
Xavier Leroy and Michel Mauny. Dynamics in ML. In John Hughes, editor, Conference on Functional Programming and Computer Achitecture, volume 523 of Lecture Notes in Computer Science, pages 406--426. Springer-Verlag, 1991.
....the pattern. This sort of matching does not work out well with more general typecase patterns. We find it preferable to match type tags against patterns exactly, and then perform explicitly prescribed subtype tests. In addition to [1] several recent studies consider languages with dynamic types [12, 14, 21]. The work most relevant to ours is that of Leroy and Mauny, who define and investigate two extensions of ML with dynamic types. We compare their designs to ours in section 4. Section 2 is a brief review of dynamic typing in simply typed languages, based on [1] Section 3 considers the addition of ....
....unique fresh arity variable introduced in the pattern. With these restrictions, matching becomes a simple extension of first order unification with restricted type operators; we omit the details. 4. 4 Related work The work on dynamic typing most closely related to ours is that of Leroy and Mauny [14]. Their dynamics without pattern variables have been implemented in the CAML language [22] Our work can be seen as an extension of their system with mixed quantification. Rather than introduce a typecase statement, Leroy and Mauny merge dynamic elimination with the usual case statement of ML. ....
Xavier Leroy and Michel Mauny. Dynamics in ML. In John Hughes, editor, Functional Programming Languages and Computer Architecture 1991, volume 523 of Lecture Notes in Computer Science, pages 406--426. SpringerVerlag, 1991.
....become fully interchangeable with objects in files. In this article we present an extension of the type system of Clean with a form of dynamic typing such that the file system can be typed properly (section 3) Most of that is due to Abadi, Cardelli Pierce [ACP89,ACP91] and Leroy Mauny [LM93]; we simplified deduction rules and the matching algorithm and integrated dynamics in Clean s current type system. We discuss why dynamic types serve our purposes best (section 2.1) and how we are implementing them in Clean (section 4) In section 4.2 we discuss how we plan to implement the ....
....they are a perfect tool to accomplish this. 3 Introducing a Dynamic type In this section we present a type called Dynamic, first introduced by Abadi et al. in [ACP89] We modify its syntax a bit to fit into our language and extend it to cover polymorphism, much like Leroy and Mauny did in CAML [LM93]. Furthermore, we integrate the type in Clean s type system. We first introduce the notion of dynamic types informally. Then we give a formal definition of its syntax (section 3.1) and we extend Clean s type system with new type rules (section 3.2) These new rules turn out to be very simple. ....
[Article contains additional citation context not shown here]
X. Leroy, M. Mauny. Dynamics in ML, In: Journal of Functional Programming 3(4), Cambridge University Press 1995.
.... through algebraic data types [43] and Laufer and Odersky formalised this system [24] using the weak ideals machinery of MacQueen, Plotkin and Sethi [31] Laufer s thesis [23] was the starting point for the work described in this dissertation, it being well known (from the work of Leroy and Mauny [27], for instance) that existential types tend to surface when integrating dynamic types into the ML type system. The first task was to convert Laufer s formalism, involving algebraic data types into a simpler and more symmetric facility, eschewing case expressions and relying solely on functional ....
X. Leroy and M. Mauny. Dynamics in ML. In Hughes [17], pages 406--426. (LNCS 523). (p 20)
....dynamic type errors. This is no more a problem in practice than the complexity of ML type inference. We have restricted reflection to compile time to achieve this notion of type security. A more traditional, no holds bared reflection could be achieved in an ML dialect extended with dynamic types[6]. 4 Conclusion The open architecture of the SMLNJ compiler provides a rich environment for language experimentation. CRML takes this one step further, allowing direct expression of source to source translation in a natural meta language. Even those who might find the idea of macros in ML ....
Xavier Leroy and Michel Mauny. Dynamics in ML, March 1991.
....is used by some compilers [28, 24] to support efficient data representation, also requires the propagation of type information into the target code. Run time type information is also crucial to the implementation of tag less garbage collection [29] pickling and marshalling [3] and type dynamic [13]. However, the advantages of runtime type passing do not come for free. Depending on the sophistication of the type representation, run time type passing can add a significant overhead to the time and space usage of This research was sponsored in part by the DARPA ITO under the title Software ....
X. Leroy and M. Mauny. Dynamics in ML. In The Fifth International Conference on Functional Programming Languages and Computer Architecture, pages 406--426, New York, August 1991. Springer-Verlag.
....of patterns in [Qian92] are more liberal than ours, suggesting that a relaxation of our rules might be feasible from the perspective of decidability of the matching problem. Mycroft s work and several efforts since combine type patterns with dynamic typing, including the work of Leroy and Mauny [LeMa91] and that of Abadi, Cardelli et al. on the type system for Modula 3 [Ab 91] Dynamic typing differs from our approach in that it is based on a special form of object which packages types and values together. Type patterns are used to analyze the type portion of a dynamic object and may fail if no ....
.... patterns are used to analyze the type portion of a dynamic object and may fail if no appropriate pattern is available; functions defined using type patterns in these systems are also not applicable to traditional static values, since they require a dynamic object as argument (see the discussion in [LeMa91]) In our system, by contrast, type pattern instantiation cannot fail at run time, and the use of run time type information is strictly limited to specific parts of structurally generic functions these functions may be applied to unmodified, traditionally constructed values with only a minimal ....
Xavier Leroy and Michel Mauny. Dynamics in ML. In Functional Programming Languages and Computer Architecture (proceedings), ed. J. Hughes (Lecture Notes in Computer Science #523), Springer-Verlag, 1991.
....languages with implicit polymorphism in the ML style. The same ideas can be used, with some interesting twists. In particular, we are led to introduce tuple variables, which stand for tuples of type variables. In addition to [1] several recent studies have considered languages with dynamic types [14, 17, 23]. The work most relevant to ours is that of Leroy and Mauny, who define and investigate two extensions of ML with dynamic types. We compare their designs to ours in section 6. Section 2 is a brief review of dynamic typing in simply typed languages, based on [1] Section 3 considers the general ....
....That is, in ML, the typecase would be expected to succeed if an instance of the tag matches the pattern. This principle is called tag instantiation. Dynamics with tag instantiation but no pattern variables have been implemented in the language CAML [24] The dynamics studied by Leroy and Mauny [17] have tag instantiation and firstorder pattern variables. First order pattern variables are not powerful enough to type some reasonable examples, such as the applyTwice function shown later. Below we describe a version of dynamics for ML with tag instantiation and second order pattern variables. ....
[Article contains additional citation context not shown here]
Xavier Leroy and Michel Mauny. Dynamics in ML. In Proceedings of the ACM Conference on Functional Programming Languages and Computer Architecture, 1991.
No context found.
X. Leroy and M. Mauny. Dynamics in ML. In Hughes [13].
No context found.
X. Leroy and M. Mauny. Dynamics in ML. In Hughes [13].
No context found.
X. Leroy and M. Mauny. Dynamics in ML. In J. Hughes, editor, Functional Programming Languages and Computer Architecture, number 523 in Lecture Notes in Computer Science, pages 406-426. Springer-Verlag, Aug. 1991.
No context found.
Xavier Leroy and Michel Mauny. Dynamics in ML. In J. Hughes, editor, Functional Programming Languages and Computer Architecture, number 523 in Lecture Notes in Computer Science, pages 406--426. Springer-Verlag, August 1991.
No context found.
X. Leroy and M. Mauny. Dynamics in ML. In Hughes [13].
No context found.
Xavier Leroy and Michel Mauny. Dynamics in ML. In John Hughes, editor, Conference on Functional Programming and Computer Achitecture, volume 523 of Lecture Notes in Computer Science, pages 406--426. Springer-Verlag, 1991.
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