14 citations found. Retrieving documents...
Alan Mycroft. Polymorphic type schemes and recursive denitions. In Proceedings of the International Symposium on Programming, volume 167 of LNCS, pages 217-239. Springer-Verlag, 1984.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:
Principal Typing and Mutual Recursion - Figueiredo, Camarão (2001)   (Correct)

....Recursion The language of core ML is extended with mutually recursive de nitions, by including expressions of the form: letrec x 1 = e 1 ; xn = e n in e, which we also write as letrec fx i = e i g i2I in e, where all x i are distinct. ML uses the following rule to type mutual recursion [Myc84, Jim96]: 8j 2 I ; fx i : i g i2I e j : j ; fx i : i g i2I e : letrec fx i = e i g i2I in e : 8i 2 I ; close( i ; i ; tv( LETREC M) In this rule, recursive de nitions must be typed under the assumption that the recursive variables have simple types. In typing the body of ....

....be typed under the assumption that the recursive variables have simple types. In typing the body of letrec, the types of the recursive variables are generalized, enabling the variables to be used polymorphicaly. A well known limitation of this rule is illustrated by the following example, given in [Myc84]: map = f: l: if null l then nil else f (hd l) map f (tl l) squarelist = l: map ( x: x x) l complement = l: map ( x: not x) l This program is not typeable under rule (LETREC M) when presented as a single, mutual recursive de nition, since function map is used polymorphically by the ....

[Article contains additional citation context not shown here]

Alan Mycroft. Polymorphic type schemes and recursive denitions. In Proceedings of the International Symposium on Programming, volume 167 of LNCS, pages 217-239. Springer-Verlag, 1984.


Principal Typing and Mutual Recursion - Figueiredo, Camarao (2001)   (Correct)

....and use a decidable type inference algorithm are based on an extension of ML with rule (FIX M) presented in Figure 3. Note that this rule only allows the de ned variable (x) to be used monomorphicaly in the body of its de nition (e) In an attempt to overcome this limitation, Mycroft [Myc84] and Meertens [Mee93] have independently proposed rule (FIX P) also presented in Figure 3. Expression x: xx is a simple example of an expression that is typable under rule (FIX P) but is not typable under rule (FIX M) For a more useful example, consider the following de nition: data Seq a = ....

....) also presented in Figure 3, for typing polymorphic recursion. Note that, as in rule (FIX P) the recursive variable (x) can be used polymorphicaly in the body of its de nition (e) The idea behind rule (FIX 0 ) is the same as the one behind the following rule (FIX) also suggested by Mycrof [Myc84], namely, that each of the nite occurrences of x in e may have a di erent (simple) type (so long as they can be used to type e and are instances of the derived type for e) x 1 : xn : e 0 : 1 : n x: e : 0 (FIX) where e is an expression with n occurrences of x, e 0 ....

[Article contains additional citation context not shown here]

Alan Mycroft. Polymorphic type schemes and recursive denitions. In Proceedings of the International Symposium on Programming, volume 167 of LNCS, pages 217-239, 1984.


Principal Typing and Mutual Recursion - Figueiredo, Camarão (2001)   (Correct)

....Recursion The language of core ML is extended with mutually recursive de nitions, by including expressions of the form: letrec x 1 = e 1 ; xn = e n in e, which we also write as letrec fx i = e i g i2I in e, where all x i are distinct. ML uses the following rule to type mutual recursion [Myc84, Jim96]: 8j 2 I ; fx i : i g i2I e j : j ; fx i : i g i2I e : letrec fx i = e i g i2I in e : 8i 2 I ; close( i ; i ; tv( LETREC M) In this rule, recursive de nitions must be typed under the assumption that the recursive variables have simple types. In typing the body of ....

....be typed under the assumption that the recursive variables have simple types. In typing the body of letrec, the types of the recursive variables are generalized, enabling the variables to be used polymorphicaly. A well known limitation of this rule is illustrated by the following example, given in [Myc84]: map = f: l: if null l then nil else f (hd l) map f (tl l) squarelist = l: map ( x: x x) l complement = l: map ( x: not x) l This program is not typeable under rule (LETREC M) when presented as a single, mutual recursive de nition, since function map is used polymorphically by the ....

[Article contains additional citation context not shown here]

Alan Mycroft. Polymorphic type schemes and recursive denitions. In Proceedings of the International Symposium on Programming, volume 167 of LNCS, pages 217-239. Springer-Verlag, 1984.


Toward a Practical Type Theory for Recursive Modules - Dreyer, Harper, Crary (2001)   (6 citations)  (Correct)

....datatypes, but not polymorphic recursion, the reason being that the latter causes type inference to be undecidable. The issue of type inference in the presence of polymorphic recursion, as well as any debate over the merits of polymorphic recursion, is outside the scope of this paper. See [17, 11, 12, 18] for more on the subject. By forcing the types of the functions in the module body to be speci ed in the rds, transparent xed points enable the coexistence of monomorphic and polymorphic recursion without a ecting type inference at all. While ordinary recursive calls remain monomorphic, ....

Alan Mycroft. Polymorphic type schemes and recursive denitions. In International Symposium on Programming, volume 167 of Lecture Notes in Computer Science, pages 217-228. Springer-Verlag, April 1984. 35


Scalable Context-Sensitive Flow Analysis Using.. - Fähndrich, Rehof, Das (2000)   (28 citations)  (Correct)

....This form has the advantage that it generates only as many instances of a function f as there are occurrences of the symbol f in the program. On the other hand, the use of fewer instances may lead to less precise results. This form of context sensitivity corresponds to recursive let polymorphism [Myc84] Note that in the rst order case, the two approaches are identical, since function symbols only occur at call sites. The analogy of copying functions is only conceptual (and obviously does not apply in the recursive case) In practice, we analyze a function only once, producing a compact ....

A. Mycroft. Polymorphic type schemes and recursive denitions. In Proceedings of the 6th International Symposium on Programming, pages 217-228, 1984.


Type-Based Flow Analysis: From Polymorphic Subtyping to.. - Rehof, Fähndrich (2001)   (8 citations)  (Correct)

....the underlying type system. The underlying types of let and letrec bound variables are given monomorphic types in the underlying type system, but label annotations on types of let and letrec bound variables will be treated polymorphically by our ow analysis. We will allow polymorphic recursion [Myc84, Hen93] over ow labels, as found in [Mos96] We will also allow our ow analysis to exploit subtyping relations over ow labels, written 1 2 , to represent the fact that a value identi ed by let id = x:int 1 .x 2 in ( id i 0 3 ) 4 , id j 1 5 ) 6 ) end Figure 3: ....

A. Mycroft. Polymorphic type schemes and recursive denitions. In Proceedings of the 6th International Symposium on Programming, pages 217-228, 1984.


Thread-Specific Heaps for Multi-Threaded Programs - Steensgaard (2000)   (7 citations)  (Correct)

....graph. Ruf demonstrated that such analyses may be extremely fast in practise although the worst case time and space complexity is exponential. More precise analysis results may be obtained by discovering the call graph during the analysis (by using Milner Mycroft style type inference mechanisms[15]) but the diculty of implementation and real life performance of such analyses is unknown. Like Ruf s analysis, our escape analysis does not assume that an object has escaped a thread simply because it is a global value or reachable from a global value. Only objects presumed accessed bymultiple ....

A. Mycroft. Polymorphic type schemes and recursive denitions. In ########### ## ### ############# ######### ## ###########,number 167 in Lecture Notes in Computer Science, pages 217-228. Springer-Verlag, 1984.


Polytypic Values Possess Polykinded Types - Hinze (2000)   (38 citations)  (Correct)

.... ) Fork (mapa v 1 ) mapa v 2 ) mapSequ : 8a 1 a 2 : a 1 a 2 ) Sequ a 1 Sequ a 2 ) mapSequ mapa Empty = Empty mapSequ mapa (Zero vs) Zero (mapSequ (mapFork mapa) vs) mapSequ mapa (One v vs) One (mapa v) mapSequ (mapFork mapa) vs) Note that mapSequ requires polymorphic recursion (Mycroft, 1984): the recursive calls have type 8a 1 a 2 : Fork a 1 Fork a 2 ) Sequ (Fork a 1 ) Sequ (Fork a 2 ) which is a substitution instance of the declared type. Haskell 98 allows polymorphic recursion only if an explicit type signature is provided. The rationale behind this restriction is that ....

Mycroft, Alan. (1984). Polymorphic type schemes and recursive denitions. Pages 217{ 228 of: Paul, M., & Robinet, B. (eds), Proceedings of the international symposium on programming, 6th colloquium, Toulouse, France. Lecture Notes in Computer Science, vol. 167.


Polytypic Values Possess Polykinded Types - Hinze (2000)   (38 citations)  (Correct)

.... ) Fork (mapa v 1 ) mapa v 2 ) mapSequ : 8a 1 a 2 : a 1 a 2 ) Sequ a 1 Sequ a 2 ) mapSequ mapa Empty = Empty mapSequ mapa (Zero vs) Zero (mapSequ (mapFork mapa) vs) mapSequ mapa (One v vs) One (mapa v) mapSequ (mapFork mapa) vs) Note that mapSequ requires polymorphic recursion [23]: the recursive calls have type 8a 1 a 2 : Fork a 1 Fork a 2 ) Sequ (Fork a 1 ) Sequ (Fork a 2 ) which is a substitution instance of the declared type. Haskell allows polymorphic recursion only if an explicit type signature is provided. Since Sequ is a nested type, it cannot be expressed ....

Alan Mycroft. Polymorphic type schemes and recursive denitions. In M. Paul and B. Robinet, editors, Proceedings of the International Symposium on Programming, 6th Colloquium, Toulouse, France, volume 167 of Lecture Notes in Computer Science, pages 217-228, 1984.


Memo Functions, Polytypically! - Hinze (2000)   (Correct)

....hard to grasp. Its de nition is, however, a simple instance of the general scheme. applyTree : 8v :TTree v (Tree v) applyTree (NTree tl tf ) Leaf = tl applyTree (NTree tl tf ) Fork l r) applyTree (applyTree tf l ) r Since TTree is a nested type, applyTree requires polymorphic recursion [12]. ut Example 11. As the nal example, consider the look up function for lists. applyList : 8ta a: 8v :ta v (a v) 8w :TList ta w (List a w) applyList applya (NList tn tc) Nil = tn applyList applya (NList tn tc) Cons a as) applyList applya (applya tc a) as Since List is a ....

Alan Mycroft. Polymorphic type schemes and recursive denitions. In M. Paul and B. Robinet, editors, Proceedings of the International Symposium on Programming, 6th Colloquium, Toulouse, France, volume 167 of Lecture Notes in Computer Science, pages 217-228, 1984.


From Polymorphic Subtyping to CFL Reachability.. - Fähndrich, Rehof, Das (1999)   (1 citation)  (Correct)

....This form has the advantage that it generates only as many instances of a function f as there are occurrences of the symbol f in the program. On the other hand, the use of fewer instances may lead to less precise results. This form of context sensitivity corresponds to recursive let polymorphism [Myc84]. Note that in the rst order case, the two approaches are identical, since function symbols only occur at call sites. The analogy of copying functions is only conceptual (and obviously does not apply in the recursive case) 9 1.5 Overview In Chapter 2 we start with the system POLYFLOW which is ....

....the complexity analysis of CFL based algorithms through a new CFL algorithm. Chapter 3 extends the POLYFLOW system to the system POLYTYPE, which is polymorphic in both the ow and the type structure. The underlying typing system of POLYTYPE (without ow annotations) is exactly the Milner Mycroft [Myc84] type system. We skip the copying system and study directly the system POLYTYPE CFL based on instantiation constraints and CFL reachability. The novel aspect of POLYTYPE CFL is its combination of two CFL reachability problems, namely the matching of instantiation sites, as well as the matching of ....

A. Mycroft. Polymorphic type schemes and recursive denitions. In Proceedings of the 6th International Symposium on Programming, pages 217-228, 1984. 58


Implicit Polymorphic Type System for the Blue Calculus - Dal-Zilio (1997)   (1 citation)  (Correct)

....A type inference system, based on the one given by Damas in his thesis [14] is presented in Table 4. A characteristic of the Damas Milner Calculus is that occurrences of a function inside the body of its (recursive) denition can only be used monomorphically. To overtake this limitation, Mycroft [29] suggested a typing rule for polymorphic recursive denitions INRIA Implicit Polymorphic Type System for the Blue Calculus 11 (see Table 5 and rule (letrec ) table 8 on page 20) We dioeerentiate those two type systems by denoting with D sequents in the presence of (rec) rule and M whenever ....

....decidable: it is possible, for example, to adapt the deterministic type inference algorithm given in [14] Other approaches use the more expressive system M . The simplest solution is to provide explicit type declarations for every reference. One can also devise specic type inference algorithms [29] or an algorithm based on semi algorithms for semi unication [18, sec. 5] we trade ooe expressiveness for a type inference algorithm guaranteed to nish only for well typed programs. It is also interesting to understand why those algorithms are more complicated than for the iML with polymorphic ....

[Article contains additional citation context not shown here]

Alan Mycroft. Polymorphic type scheme and recursive denitions. In 6th International Symposium on programming, volume 167 of Lecture Notes in Computer Science, pages 217228. Springer-Verlag, 1984.


Program Optimisation, Naturally - Bird, Gibbons, Jones (1999)   (Correct)

....In this paper we derive another, quite di erent linear time algorithm for reversing a list. The derivation relies on a higher order naturality [4] property of the function unzip, which turns a list of pairs into a pair of lists in the obvious way. The nal program uses polymorphic recursion [8], and can be expressed rather neatly using nested datatypes [1] Although neither feature is an essential component of the fast algorithm, they do simplify it, providing more evidence of the practical utility of these two concepts. Hinze [3] presents another application of these techniques to ....

....something peculiar going on with the types here. On the lefthand side of the second equation above, rev k 1 is acting on a list of elements of type A for some A. However, on the right hand side, rev k is acting on a list of pairs of elements of type A. This is an instance of polymorphic recursion [8]. The latest versions of Haskell allow polymorphic recursion like this, but they cannot infer the types of polymorphically recursive functions because the type inference problem is undecidable. As a consequence, the types need to be given by the programmer and merely checked by Haskell. 5 Nested ....

Alan Mycroft. Polymorphic type schemes and recursive denitions. In LNCS 167: International Symposium on Programming, pages 217-228. Springer-Verlag, 1984.


Incremental Polymorphic Type Checking With Update - Mycroft (1992)   (1 citation)  Self-citation (Mycroft)   (Correct)

....and algorithms. Tiuryn gives a good survey in [11] Milner [7] documents the ML polymorphic type inference algorithm. Damas and Milner [2] express the type inference problem in terms of logical inference rules. Mycroft and O Keefe [9] show how Prolog admits a similar type system. Mycroft [8] exhibits a more general type inference rule for recursion than Milner and shows it to be sound. Independently, Henglein [3] and Kfoury, Tiuryn and Urzyczyn [4] show that type inference with Mycroft s rule for recursion is equivalent to the semi uni cation problem which was later shown undecidable ....

....its free identi ers to its most general type scheme (where we view failure to type check as a maximal type) This property is important here to guarantee that instantiating the type of an identi er at most instantiates the types of its dependent de nitions. 2. 4 Iterative type inference Mycroft [8] showed that a recursive de nition d (or mutually recursive set of such de nitions) induces a monotonic function T d on type schemes using the FIX rule. Given the completion to a cpo by adjoining a top element err then T d is a continuous function. This gives a natural iterative process to nd ....

Mycroft, A. \Polymorphic type schemes and recursive denition", Proc. Int. Symp. on Programming, Springer-Verlag LNCS vol. 167, 1984.

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