MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Polytypic Functional Programming and Data Abstraction (2006)

by Pablo Nogueira Iglesias
Add To MetaCart

Abstract:

Structural polymorphism is a generic programming technique known within the functional programming community under the names of polytypic or datatype-generic programming. In this thesis we show that such a technique conflicts with the principle of data abstraction and propose a solution for reconciliation. More concretely, we show that popular polytypic extensions of the functional programming language Haskell, namely, Generic Haskell and Scrap your Boilerplate have their genericity limited by data abstraction. We propose an extension to the Generic Haskell language where the `structure' in `structural polymorphism' is defined around the concept of interface and not the representation of a type.

Citations

3853 Design Patterns: Elements of Reusable Object-Oriented Software – Gamma, Helm, et al. - 1995
1295 The C++ Programming Language – Stroustrup - 1991
1122 Introduction to Functional Programming – Bird, Wadler - 1988
870 The Lambda Calculus. Its Syntax and Semantics – Barendregt - 1984
755 A Theory of Objects – Abadi, Cardelli - 1996
719 On understanding types, data abstraction, and polymorphism – Cardelli, Wegner - 1985
554 Notions of computation and monads – Moggi - 1991
389 Types and Programming Languages – Pierce - 2002
388 Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory – Stoy - 1977
353 The formulas-as-types notion of construction – Howard
338 ML for the Working Programmer – Paulson - 1991
304 Towards a theory of type structure – Reynolds - 1974
280 How to make ad-hoc polymorphism less ad-hoc – Wadler, Blott - 1989
254 The Calculi of Lambda-Conversion – Church - 1941
251 Foundations for Programming Languages – Mitchell - 1996
250 Functional programming with bananas, lenses, envelopes and barbed wire – Meijer, Fokkinga, et al. - 1991
246 An initial algebra approach to the specification, correctness, and implementation of abstract data types’, in: Current Trends in Programming Methodology, edited by R.T – Goguen, Thatcher, et al.
244 Why functional programming matters – Hughes - 1989
242 Compiling polymorphism using intensional type analysis – HARPER, MORRISETT - 1995
224 Definitional interpreters for higher-order programming languages – Reynolds - 1972
224 Theorems for free – Wadler - 1989
198 Interpretation fonctionnelle et elimination des coupures de l'arithmetique d'ordre superieur. These d'Etat, Universite de Paris VII – Girard - 1972
183 Order Sorted Algebra I: Equational deduction for Multiple – Goguen, Meseguer - 1992
168 Type Systems – Cardelli - 1997
162 A system of constructor classes: overloading and implicit higher-order polymorphism – Jones - 1995
156 Purely functional data structures – Okasaki - 1998
150 Functionality in Combinatory Logic – Curry - 1934
147 Principals of Programming Languages – Tennent - 1981
138 The Next 700 Programming Languages – Landin - 1966
132 Fundamental Concepts in Programming Languages – Strachey - 1967
129 Basic Category Theory for Computer Scientists – Pierce - 1993
124 Functional programming and parallel graph rewriting – Plasmeijer, Eekelen - 1993
123 Type inference with polymorphic recursion – Henglein - 1993
112 Qualified Types: Theory and Practice – Jones - 1992
104 A Fold for All Seasons – Sheard, Fegaras - 1993
104 Views: A way for pattern matching to cohabit with data abstraction – WADLER - 1987
97 An Introduction to Object-Oriented Programming – Budd - 1991
95 The Act of Creation – Koestler - 1964
94 Type classes in Haskell – Hall, Hammond, et al. - 1996
84 Abstract Data Types and the Development of Data Structures – Guttag - 1977
83 Polytypic values possess polykinded types. Science of computer programming – Hinze - 2002
83 Putting type annotations to work – Odersky, Läufer - 1996
82 The view from the left – McBride, McKinna
79 STL Tutorial and Reference Guide – Musser, Saini - 1996
78 Computability, an Introduction to Recursive Function Theory – Cutland - 1980
77 Generic programming — an introduction – Backhouse, Jansson, et al. - 1999
75 Scrap your boilerplate: a practical design pattern for generic programming – Lämmel, Jones, et al. - 2003
74 Type classes: Exploring the design space – Jones, Jones, et al. - 1997
74 Polymorphic type schemes and recursive definitions – Mycroft - 1984
72 Bananas in space: Extending fold and unfold to exponential types. Pages 324–333 of: Fpca95: Conference on functional programming languages and computer architecture – Meijer, Hutton - 1995