| K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type erasure semantics. In Proc. ICFP, pages 301--313, 1998. |
....type inference, Functorial ML programming is a rather low level language and lacks the simplicity of Hinze s approach. Functorial ML and other work on shape theory has resulted in the programming language FISh [22] Weirich and others [33] and the earlier work on intensional polymorphism [8]) employ a typecase construct which performs run time tests on types to implement polytypic functions of an expressiveness similar to Hinze s. Ruehr s structural polymorphism [31] adopts similar type tests. By avoiding type interpretation at run time, Generic Haskell distinguishes itself from ....
Karl Crary, Stephanie Weirich, and J. Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In ICFP '98, pages 301--312. ACM Press, 1998.
....of the underlying type checker. The last limitation is particularly vexing because it places many interesting potential applications just out of reach, and imposes unnecessary run time overhead in others. For example, some type indexed types (e.g. generic generalized tries [12] and Typerec [10, 7]) can almost, but not quite, be implemented naturally. The obstacle is that the type checker does not know certain valid properties of types that are not important for normal type checking. For example, because type equality in Haskell is syntactic, 1 = 1 follows from 1 2 = 1 ....
....applying a uni er. Proposition 1. Assume i : and (i.e. uni es ) Then ; 1 = 2 : if and only if 1 = 2 . The proofs of these properties are straightforward. The proof of type soundness is similar in structure to those for related systems i [20] and R [7]. We prove the standard substitution lemmas, as well as additional cases for substituting types into equivalence judgments and substituting equivalence derivations into equivalence and typing derivations. We also show that typed values have canonical forms even with our stronger notion of type ....
[Article contains additional citation context not shown here]
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP '98), Baltimore, MD, volume (34)1 of ACM SIGPLAN Notices, pages 301-312. ACM Press, June 1999.
.... to type indexed functions, see Dubois et al. [8] Jay et al. [22] and Yang [36] but none of them mentions user de ned type indexed data types (Yang does mention value indexed types, usually called dependent types) Type indexed data types, however, appear in the work on intensional type analysis [11, 6, 5, 33, 35]. Intensional type analysis is used in typed intermediate languages in compilers for polymorphic languages, among others to be able to optimize code for polymorphic functions. This work di ers from our work in several aspects: typed intermediate languages are expressive, but rather complex ....
Karl Crary, Stephanie Weirich, and J. Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings ICFP 1998: International Conference on Functional Programming, pages 301-312. ACM Press, 1998.
....The definitions of the traversal primitives are as simple as the definitions of the implode and explode functions for the previous model. They are not shown for brevity. To define adhocTP t and adhocTU t for each datatype, an additional technique is needed: we model strategy update as a type case [7, 5]. The instances of the Update class, mentioned in the context of class Term, implement this type case via an encoding technique for Haskell inspired by [24] In essence, this technique involves two members dUpdTP and dUpdTU in the Update class for each datatype d. These members for d select their ....
....be typed and generic. Generic functional programming Related forms of genericity have been proposed elsewhere. These approaches are not just more complex than ours, but they are even insufficient for a faithful encoding of the combinators we propose. With intensional and extensional polymorphism [7, 5] one can also encode type parametric functions where the behaviour is defined via a run time type case. However, as is the corresponding systems do not cover algebraic data types, but only products, function space, and basic data types. With polytypic pro gramming (cf. Polyp and Generic Haskell ....
K. Crary, S. Weirich, and G. Morriserr. Intensional polymorphism in type-erasure semantics. ACM SIGPLAN Notices, 34(1):301-312, Jan. 1999.
....in formalizing a multistage language, and proving its safety under a sophisticated dependent type system. We do this by capitalizing on the recent work by Shao, Saha, Trifonov and Papaspyrou s on the TL system [44] which in turn builds on a number of recent works on typed intermediate languages [20, 7, 59, 43, 9, 57, 44]. 1.6 Organization of this Paper Section 2 shows how to take our motivating example and turn it into a tagless staged interpreter in a dependently typed setting. First, we present the syntax and semantics of a simple typed language and show how these can be implemented in a direct fashion in ....
....our type checking function, as it produces a term whose type depends on the value of its argument. A standard solution to is to introduce a mechanism that allows only a limited kind of dependency between values and types. This limited dependency uses so called singleton or representation types [60, 7, 9, 57]. The basic idea is to allow bijections on ground terms between the value and type world. Now, we can rewrite our interpreter so that its type does not depend on runtime values, which may introduce effects into the typechecking phase. Any computation in the type checking phase can now be ....
[Article contains additional citation context not shown here]
Karl Crary, Stephanie Weirich, and J. Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In International Conference on Functional Programming (ICFP) , Baltimore, Maryland, USA, pages 301--312, 1998.
....work has addressed some of these shortcomings: Leroy and Mauny [21] and Abadi et al. 1] showed how to safely combine dynamics and polymorphism. Hinze and Peyton Jones [18] have introduced derivable type classes, which permit polytypic definitions of type classes. Crary, Weirich, and Morrisett [9] have reconciled intensional polymorphism with type erasure using explicit type representations. However, implementations of dynamics, derivable type classes, and type representations still seem to require substantial compiler modifications and soundness proofs. In this paper, we show that this ....
....rep t 1 t 2 It is important to note, however, that this use of the class system is just a convenience, not a necessity for programming with representations. 3 Dynamics 3.1 The type Dynamic A dynamic value is a pair consisting of the value itself and a representation of its type. As noted by [14, 9], we can readily define Dynamic using the type of type representations Rep as dynamic a = Dyn rep a. The existential quantifier (which is written as a universal quantifier) effectively hides the type of the dynamic value. It goes without saying that dynamic values thus defined are ....
[Article contains additional citation context not shown here]
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP '98), Baltimore, MD, volume (34)1 of ACM SIGPLAN Notices, pages 301--312. ACM Press, January 1999.
.... to type indexed functions, see Dubois et al. [7] Jay et al. [21] and Yang [36] but none of them mentions user defined type indexed data types (Yang does mention value indexed types, usually called dependent types) Type indexed data types, however, appear in the work on intensional type analysis [10, 6, 5, 32, 34]. Intensional type analysis is used in typed intermediate languages in compilers for polymorphic languages, among others to be able to optimize code for polymorphic functions. This work di#ers from our work in several aspects: typed intermediate languages are expressive, but rather complex ....
Karl Crary, Stephanie Weirich, and J. Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings ICFP 1998: International Conference on Functional Programming, pages 301--312. ACM Press, 1998.
....DML(C) can incorporate semantically rich constraint theories and thus guarantee a decidable type checking algorithm, our constraint theory is in principle fixed but still variable due to the underlying term rewriting system and the choice of strategy for each function. Intensional type analysis [21, 7, 6, 50] is an approach to defining functions by induction on the structure of types. These works are closer to generic programming [22, 25] The commonality is that their scheme of function definition is much more rigid than with our approach. Usually, the inspection of the type structure is limited to a ....
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. In Hudak [23], pages 301--312.
....de nitions of the traversal primitives are as simple as the de nitions of the implode and explode functions for the previous model. They are not shown for brevity. To de ne adhocTP and adhocTU for each datatype, an additional technique is needed: we model strategy update as a type case [7, 5]. The instances of the Update class, mentioned in the context of class Term, implement this type case via an encoding technique for Haskell inspired by [24] In essence, this technique involves two members dUpdTP and dUpdTU in the Update class for each datatype d. These members for d select their ....
....be typed and generic. Generic functional programming Related forms of genericity have been proposed elsewhere. These approaches are not just more complex than ours, but they are even insucient for a faithful encoding of the combinators we propose. With intensional and extensional polymorphism [7, 5] one can also encode typeparametric functions where the behaviour is de ned via a run time type case. However, as is the corresponding systems do not cover algebraic data types, but only products, function space, and basic data types. With polytypic programming (cf. PolyP and Generic Haskell ....
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. ACM SIGPLAN Notices, 34(1):301-312, Jan. 1999.
....adhoc suggests to consider ad hoc polymorphism [12] but this form on its own is again not sucient because it does not allow us to write suf ciently generic functions which are applicable to all (term) types, but still expose uniform behaviour for most types. We mentioned intensional polymorphism [22, 13] to provide the concept underlying adhoc but it is not sucient on its own because it does not cover the traversal part of our setting. The same is true for dynamic typing [3] Finally, we might consider polytypism but again it misses some important ingredient, namely it lacks the type case ....
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in typeerasure semantics. ACM SIGPLAN Notices, 34(1):301-312, Jan. 1999. 35
.... of use and encourage uniform data representations rather than customized ones [WDMT0X] However, existential types are particularly useful for abstracting over di#erences in free variables that are exposed in typed closure representations for functions of the same source type [MMH96, MWCG99, CWM98] In the CIL compiler, these di#erences are reconciled by injecting the types of closures into a union type and performing a virtual case dispatch at the application site [DMTW97] In a type erasure semantics, these injections do not give rise to any run time code. However, they can potentially ....
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type erasure semantics. In ICFP '98 [ICFP98], pp. 301--312.
....in the example, the terms are typable, albeit with some di#culty. In a naive approach, closure converting two functions of the same type can yield closures whose types di#er due to di#erences in free variables exposed by the transformation. This problem is usually addressed with existential types [25, 27, 12]. In contrast, CIL uses intersection and union types to solve this problem; as argued in [44] this has advantages over existential quantifiers for customizing data representations. The URA simplifies compiler writing and facilitates the support of features like type polymorphism, separate ....
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type erasure semantics. In Proc.
.... of use and encourage uniform data representations rather than customized ones [WDMT0X] However, existential types are particularly useful for abstracting over di#erences in free variables that are exposed in typed closure representations for functions of the same source type [MMH96, MWCG99, CWM98] In the CIL compiler, these di#erences are reconciled by injecting the types of closures into a union type and performing a virtual case dispatch at the application site [DMTW97] In a type erasure semantics, these injections do not give rise to any run time code. However, they can potentially ....
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type erasure semantics. In ICFP '98 [ICFP98], pp. 301--312.
....the expression ifq (q # e1 # e2) will reduce to e1 and therefore e2 is dead code and the test is wasted computation. However, during the proof of soundness of the type system, such configurations arise and cause di#culties. To avoid these di#culties, we follow the strategy of Crary et al. [1] and add the trivialization rules (14) and (15) which deal with these redundant cases. Each rule type checks only the branch of the if statement that will be taken. Operational Semantics The operational semantics for the language is given by the relation e # # s e # (see Figure 7) The symbol s ....
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In ACM International Conference on Functional Programming, pages 301--312, Baltimore, September 1998.
No context found.
Crary, K., Weirich, S., and Morrisett, G. 2002. Intensional polymorphism in type-erasure semantics. Journal of Functional Programming 12, 6 (Nov.), 567--600.
No context found.
Crary, K., Weirich, S., and Morrisett, G. 1998. Intensional polymorphism in type-erasure semantics. In ACM International Conference on Functional Programming. ACM Press, Baltimore, 301-312.
No context found.
Crary, K., Weirich, S., and Morrisett, G. 1998. Intensional polymorphism in type-erasure semantics. In 1998 ACM SIGPLAN International Conference on Functional Programming. ACM Press, New York, NY, USA, 301--312.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In ACM International Conference on Functional Programming, pages 301--312, Baltimore, September 1998. 53
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. In 1998.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type erasure semantics. Journal of Functional Programming, 12(6):567--600, November 2002.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional Polymorphism in Type Erasure Semantics. In Proceedings of the Third ACM SIGPLAN International Conference on Functional Programming, volume 34 of ACM SIGPLAN Notices, pages 301--313, Baltimore, MD, September 1998.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional Polymorphism in Type Erasure Semantics. In Journal of Functional Programming. To appear.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type erasure semantics. Journal of Functional Programming, 12(6):567--600, November 2002.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In 1998 ACM International ConferenceonFunctional Programming, pages 301#312, Baltimore, September 1998. Extended version published as Cornell University technical report TR98-1721.
....alias some particular region # # but may alias other regions. Second, after we dynamically check which of the two contexts above we are in, we must refine the type of our capability. Harper and Morrisett s typecase [13] mechanism developed for the TIL compiler and further refined by Crary et al. [6] allows the sort of type refinement required here. Aiken et al. 1] have also studied how to optimize the initial Tofte Talpin region framework and they also allow regions to be independently deallocated. Furthermore, their system separates the naming of a region from its allocation. Our ....
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In ACM SIGPLAN International Conference on Functional Programming, pages 301--312, Baltimore, September 1998.
....type representation could result in poor performance at run time. Shao et al. 19] discuss a number of ways to deal with the former issue, such as hash consing and using explicit substitutions. The latter issue can be addressed by making the construction and passing of type information explicit [5] and doing so before performing singleton elimination; then singleton elimination will have no effect on the run time version of type information. ....
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In
....a list of types and their definitions used by the current program, used to resolve the imported type definitions of modules loaded later. 3. Rather than require a type passing semantics for the type argument to load, we make use of term level representations of types, in the style of Crary et al. [8]. These simplifications serve three purposes. First, by eliminating possible type components from the value returned by load, we avoid a complicated modular theory, at a small cost to the flexibility of the system. Second, the majority of the functionality of load parsing binary representations ....
....in the TALx86 [32] implementation of TAL. The key component of TAL Load is the load primitive: load : ##. R(#) bytearray) # # option In addition to the bytearray containing the module data, load takes a term representation of its type argument, following the approach of Crary et al. s #R [8]. Informally, #R defines term representations for types, called R terms, and types to classify these terms, called R types. For example, the term to represent the type int would be R int , and the type of this term would be R(int) The type R(#) is a singleton type; for each # there is only one ....
[Article contains additional citation context not shown here]
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. In
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type erasure semantics. In Proc. ICFP, pages 301--313, 1998.
No context found.
K. Crary, S. Weirich, and J. G. Morrisett. Intensional polymorphism in type-erasure semantics. In International Conference on Functional Programming, pages 301--312, 1998.
No context found.
Karl Crary, Stephanie Weirich, and J. Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In International Conference on Functional Programming (ICFP) , Baltimore, Maryland, USA, pages 301--312, 1998.
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings of the International Conference on Functional Programming (ICFP '98), pages 301--312, Baltimore, MD, September 1998.
No context found.
Karl Crary, Stephanie Weirich, and Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings of the International Conference on Functional Programming (ICFP '98), pages 301--312, Baltimore, MD, September 1998.
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type erasure semantics. In ICFP '98 [ICFP98], pp. 301--312.
No context found.
K. Crary, S. Weirich, J. G. Morrisett, Intensional polymorphism in type-erasure semantics, in: Proceedings ICFP 1998.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In Third ACM SIGPLAN International Conference on Functional Programming, pages 301--312, Baltimore Maryland, USA, September 1998.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In ACM SIGPLAN International Conference on Functional Programming, pages 301--312, Baltimore, September 1998.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP '98), Baltimore, MD, volume (34)1 of ACM SIGPLAN Notices, pages 301--312. ACM Press, January 1999.
No context found.
Karl Crary, Stephanie Weirich, and Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings of the International Conference on Functional Programming (ICFP '98), pages 301--312, Baltimore, MD, September 1998.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type erasure semantics. Journal of Functional Programming, 12(6):567--600, November 2002. URL: http://www.cis.upenn.edu/~sweirich/ papers/typepass/typepass-journal.ps.
No context found.
Karl Crary, Stephanie Weirich, and J. Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In ICFP '98, pages 301--312. ACM Press, 1998.
No context found.
Karl Crary, Stephanie Weirich, and J. Gregory Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings ICFP 1998.
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type erasure semantics. Journal of Functional Programming, 12(6):567--600, Nov. 2002.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional Polymorphism in Type-Erasure Semantics. In Proc. 1998.
No context found.
Karl Crary, Stephanie Weirich, and Greg Morrisett. Intensional polymorphism in type-erasure semantics. In ACM SIGPLAN pages 301--312. ACM Press, 1998.
No context found.
K. Crary, S. Weirich, andG. Morrisett. Intensional polymorphism in type erasure semantics. Journal of Functional Programming, 12(6):567--600, Nov. 2002.
No context found.
K. Crary, S. Weirich, J. G. Morrisett, Intensional polymorphism in type-erasure semantics, in: Proceedings ICFP 1998.
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type erasure semantics. In ICFP '98 [ICFP98], pp. 301-312.
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. In Proc. 1998.
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings of the International Conference on Functional Programming (ICFP '98), pages 301--312, Baltimore, MD, September 1998.
No context found.
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. ACM SIGPLAN Notices, 34#1#:301#312, Jan. 1999.
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