| F. Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns over Types. PhD thesis, University of Michigan, 1992. |
....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 these approaches. The work of Hinze [18, 16, 13] upon which Generic Haskell is based, is a major improvement over the other approaches, because it allows the instantiation of ....
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan, 1992.
....to polytypic values is, to the best of the author s knowledge, original. Previous approaches to polytypic programming [16,12] were restricted in that they only allowed to parameterize values by types of one fixed kind. Three notable exceptions are Functorial ML (FML) 19] the work of F. Ruehr [33], and the work of P. Hoogendijk and R. Backhouse [15] FML allows to quantify over functor arities in type schemes (since FML handles only regular, first order functors, kinds can be simplified to arities) However, no formal account of this feature is given and the informal description makes use ....
Karl Fritz Ruehr. Analytical and Structural Polymorphism Expressed using Patterns over Types. PhD thesis, University of Michigan, 1992.
....been made precise. Third, we have described a separate extension that allows the programmer to de ne instance declarations for higher order kinded types. The need for this extension was noted in [4] but no solution was given. Though there is a considerable amount of work on generic programming [18, 3, 9] this is the rst paper we are aware of apart from PolyP [8] that aims at adding generic features to an existing functional language. The PolyP extension o ers a special construct (essentially, a type case) for de ning generic functions. The resulting de nitions are similar to ours (modulo ....
Karl Fritz Ruehr. Analytical and Structural Polymorphism Expressed using Patterns over Types. PhD thesis, University of Michigan, 1992.
....of the author s knowledge, original. Previous approaches to polytypic programming (Jansson Jeuring, 1997; Hinze, 2000) were restricted in that they only allowed to parameterize values by types of one xed kind. Two notable exceptions are Functorial ML (FML) Jay et al. 1998) and the work of F. Ruehr (Ruehr, 1992). FML allows to quantify over functor arities in type schemes (since FML handles only regular, rst order functors, kinds can be simpli ed to arities) However, no formal account of this feature is given and the informal description makes use of an in nitary typing rule. Furthermore, the polytypic ....
Ruehr, Karl Fritz. (1992). Analytical and structural polymorphism expressed using patterns over types. Ph.D. thesis, University of Michigan.
....to polytypic values is, to the best of the author s knowledge, original. Previous approaches to polytypic programming [11, 8] were restricted in that they only allowed to parameterize values by types of one xed kind. Three notable exceptions are Functorial ML (FML) 14] the work of F. Ruehr [27], and the work of P. Hoogendijk and R. Backhouse [10] FML allows to quantify over functor arities in type schemes (since FML handles only regular, rst order functors, kinds can be simpli ed to arities) However, no formal account of this feature is given and the informal description makes use of ....
Karl Fritz Ruehr. Analytical and Structural Polymorphism Expressed using Patterns over Types. PhD thesis, University of Michigan, 1992.
....precise. Third, we have described a separate extension that allows the programmer to de ne instance declarations for higherorder kinded types. The need for this extension was noted in (Hinze, 1999) but no solution was given. Though there is a considerable amount of work on generic programming (Ruehr, 1992; Cockett Fukushima, 1992; Jay et al. 1998) this is the rst paper we are aware of apart from PolyP (Jansson Jeuring, 1997) that aims at adding generic features to an existing functional language. The PolyP extension o ers a special construct (essentially, a type case) for de ning generic ....
Ruehr, K. F. (1992) Analytical and Structural Polymorphism Expressed using Patterns over Types. PhD thesis, University of Michigan.
....The polytypic functions 2F and sum F are as polymorphic as eq and are, which is, respectively, somewhat and hardly. However, eq is or can be defined as a polytypic function; see e.g. Sheard [34] Other terms that have been used for the same concept are structural polymorphism (Ruehr [33]) generic programming (de Moor [5] Bird, de Moor and Hoogendijk [4] and type parametric programming (Sheard [34] 3 Some historical remarks In what I ll refer to as classic BMF [28] 2] a.k.a. Squiggol , the focus was on lists, with particular emphasis on a symmetric view in which ....
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan, 1992.
....xs) This equation extends the definition of enc given in Sec. 3 and specifies an exception to the general scheme. 8 Related work Generic programming The concept of generic functional programming trades under a variety of names: F. Ruehr refers to this concept as structural polymorphism (Ruehr, 1992; Ruehr, 1998) T. Sheard calls generic functions type parametric (Sheard, 1993) C.B. Jay and J.R.B. Cocket use the term shape polymorphism (Jay Cocket, 1994) and J. Jeuring invented the word polytypism (Jeuring Jansson, 1996) The mainstream of generic programming is based on the initial ....
....22 R. Hinze mer must additionally consider cases for type composition and for type recursion (see (Hinze, 1999e) for a more detailed comparison) All the approaches are restricted to first order kinded, regular datatypes (or even subsets of this class) One notable exception is the work of F. Ruehr (Ruehr, 1992), who presents a higher order language based on a type system related to ours (only type recursion is missing) Genericity is achieved through the use of type patterns which are interpreted at run time. This paper can be regarded as a successor to (Hinze, 1999e) where a similar approach ....
[Article contains additional citation context not shown here]
Ruehr, Karl Fritz. (1992). Analytical and structural polymorphism expressed using patterns over types. Ph.D. thesis, University of Michigan.
....function thread(t) essentially commutes the type constructors t and m. It generalizes the Prelude function sequence, which operates on lists. 5 Related work The concept of generic functional programming trades under a variety of names: F. Ruehr refers to this concept as structural polymorphism [22, 21], T. Sheard calls generic functions type parametric [23] C.B. Jay and J.R.B. Cocket use the term shape polymorphism [12] R. Harper and G. Morrisett [5] coined the phrase intensional polymorphism, and J. Jeuring invented the word polytypism [13] The mainstream of generic programming is based on ....
....functions. The generic de nitions are similar to the ones given in this paper (modulo notation) except that the generic programmer must additionally consider cases for type composition and for type recursion (see [8] for a detailed comparison) All the approaches with the notable exception of [22] are restricted to rst order kinded, regular datatypes (or even subsets of this class) that is they cover only a small part of Haskell s type system. The theoretical background and a possible implementation of the generic programming extension presented here are described in a companion paper ....
Karl Fritz Ruehr. Analytical and Structural Polymorphism Expressed using Patterns over Types. PhD thesis, University of Michigan, 1992.
....with (the structure of) a datatype. The possibility to define polytypic functions adds another level of flexibility in the reusability of algorithms and in the design of general purpose programming libraries. Other terms used for polytypism in the literature are structural polymorphism (Ruehr [77]) type parametric programming (Sheard [78] generic programming (Bird, de Moor and Hoogendijk [9] polynomial polymorphism (Jay [41] and shape polymorphism (Jay [42] 1.1 What is polytypism To give an example of what polytypism is we show that the definitions of the function sum on ....
....Jay [42] has developed an alternative theory for polytypic functions (in his terminology: shapely functions) in which values are represented by their structure and their contents. Type systems for languages with constructs for writing polytypic functions have been developed by Jay [41] Ruehr [77], Sheard and Nelson [80] and Jansson and Jeuring [39] Our extension of Haskell is based on the type system described in [39] In object oriented programming polytypic programming appears under the names 3.2. DATATYPES AND FUNCTORS 39 design patterns [30] and adaptive object oriented ....
[Article contains additional citation context not shown here]
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan, 1992.
....( can be found in [30, 34, 35, 40, 14] Jay [18] has developed an alternative theory for polytypic functions, in which values are represented by their structure and their contents. Type systems for languages with constructs for writing polytypic functions have been developed by Jay [17] Ruehr [38, 39], Sheard and Nelson [41] and Jansson and Jeuring [16] Our extension of Haskell is based on the type system described in [16] In object oriented programming polytypic programming appears under the names design patterns [12] and adaptive object oriented programming [27, 36] In adaptive ....
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan, 1992.
....always be truncated. In general such truncation is possible for all types that have a nullary constructor, but not for all regular types. A more general ( doubly polytypic ) variant of pzip: transpose (called zip.d. e in [6] transpose : d (e a) e (d a) was first described by Fritz Ruehr [20]. For a formal definition, see Hoogendijk Backhouse [6] pzipWith : a,b) Maybe c) d a,d b) Maybe (d (a,b) pzipWith : FunctorOf d c e e) d a, d b) e) a, b) c) d a,d b) e Function pzipWith op works like pzip but uses the operator op to combine the values ....
....of the same shape. This list has one element for every combination of values drawn from the lists in x. These two functions can be generalized to thread any monad through a value. Known uses: propagate is used in the definition of pzip. Background: Function propagate is an instance of transpose [20], and both propagate and cross are instances of thread below. thread : Monad m = d (m a) m (d a) fthread : Monad m = f (m a) m b) m (f a b) Function thread is used to tie together the monad computations in the elements from left to right. Also known as: dist d [4] Known uses: Function ....
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan, 1992.
....can always be truncated. In general such truncation is possible for all types that have a nullary constructor, but not for all regular types. A more general (idoubly polytypicj) variant of pzip: transpose (called zip.d. e in [6] transpose : d (e a) e (d a) was rst described by Fritz Ruehr [19]. For a formal de nition, see Hoogendijk Backhouse [6] pzipWith : a,b) Maybe c) d a,d b) Maybe (d (a,b) pzipWith : FunctorOf d c e e) d a, d b) e) a, b) c) d a,d b) e Function pzipWith op works like pzip but uses the operator op to combine the values ....
....of the same shape. This list has one element for every combination of values drawn from the lists in x. These two functions can be generalised to thread any monad through a value. Known uses: propagate is used in the de nition of pzip. Background: Function propagate is an instance of transpose [19], and both propagate and cross are instances of thread below. thread : Monad m = d (m a) m (d a) fthread : Monad m = f (m a) m b) m (f a b) Function thread is used to tie together the monad computations in the elements from left to right. Also known as: dist d [4] Known uses: Function ....
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan, 1992.
....of type pattern abstractions. The resulting function is given a type which generalizes the type for map on lists in the obvious way, using a universally quantified structural variable: map : # , #. #) # Related work This paper reports on research I developed for my Ph. D. dissertation [Rue92] during the period 1986 92. Although the main ideas were presented in several informal venues, they were never published in a widely available form. In the meantime, I have become aware of several other research efforts which sought to extend the type systems of functional languages with similar ....
....systems is embodied in a higher order, explicitly typed calculus which includes patterns over both types and values. This calculus, cast as an extension of the usual higher order lambda calculus (see [Gir72, Rey74, McC79] is motivated and developed at length in the author s Ph.D. dissertation [Rue92], where it is distinguished from the more applied variety by the name analytical polymorphism. Due to space considerations, we present here only an abbreviated description of this full calculus. The calculus is divided into three levels: values, types and kinds. The syntax for kinds is given by ....
[Article contains additional citation context not shown here]
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. Ph.D. dissertation, University of Michigan, 1992.
No context found.
F. Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns over Types. PhD thesis, University of Michigan, 1992.
No context found.
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan, 1992.
No context found.
Fritz Ruehr. Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan, 1992.
No context found.
Karl Fritz Ruehr. Analytical and Structural Polymorphism Expressed using Patterns over Types. PhD thesis, University of Michigan, 1992.
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