skip to main content
Skip header Section
Qualified types: theory and practiceApril 1995
Publisher:
  • Cambridge University Press
  • 40 W. 20 St. New York, NY
  • United States
ISBN:978-0-521-47253-1
Published:01 April 1995
Pages:
157
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. ACM
    Xie N, Pickering M, Löh A, Wu N, Yallop J and Wang M (2022). Staging with class: a specification for typed template Haskell, Proceedings of the ACM on Programming Languages, 6:POPL, (1-30), Online publication date: 16-Jan-2022.
  2. ACM
    Madsen M and van de Pol J (2021). Relational nullable types with Boolean unification, Proceedings of the ACM on Programming Languages, 5:OOPSLA, (1-28), Online publication date: 20-Oct-2021.
  3. ACM
    Matsuda K and Wang M (2020). Sparcl: a language for partially-invertible computation, Proceedings of the ACM on Programming Languages, 4:ICFP, (1-31), Online publication date: 2-Aug-2020.
  4. ACM
    Jones M, Morris J and Eisenberg R (2019). Partial type constructors: or, making ad hoc datatypes less ad hoc, Proceedings of the ACM on Programming Languages, 4:POPL, (1-28), Online publication date: 1-Jan-2020.
  5. ACM
    Pauwels K, Karachalias G, Derhaeg M and Schrijvers T Bidirectional type class instances Proceedings of the 12th ACM SIGPLAN International Symposium on Haskell, (30-43)
  6. ACM
    Bottu G, Xie N, Marntirosian K and Schrijvers T (2019). Coherence of type class resolution, Proceedings of the ACM on Programming Languages, 3:ICFP, (1-28), Online publication date: 26-Jul-2019.
  7. ACM
    Morris J and McKinna J (2019). Abstracting extensible data types: or, rows by any other name, Proceedings of the ACM on Programming Languages, 3:POPL, (1-28), Online publication date: 2-Jan-2019.
  8. ACM
    Martínez G, Jaskelioff M and De Luca G (2018). Improving typeclass relations by being open, ACM SIGPLAN Notices, 53:7, (68-80), Online publication date: 7-Dec-2018.
  9. ACM
    Martínez G, Jaskelioff M and De Luca G Improving typeclass relations by being open Proceedings of the 11th ACM SIGPLAN International Symposium on Haskell, (68-80)
  10. ACM
    Bottu G, Karachalias G, Schrijvers T, Oliveira B and Wadler P (2017). Quantified class constraints, ACM SIGPLAN Notices, 52:10, (148-161), Online publication date: 31-Oct-2017.
  11. ACM
    Bottu G, Karachalias G, Schrijvers T, Oliveira B and Wadler P Quantified class constraints Proceedings of the 10th ACM SIGPLAN International Symposium on Haskell, (148-161)
  12. ACM
    Oliveira B, Shi Z and Alpuim J (2016). Disjoint intersection types, ACM SIGPLAN Notices, 51:9, (364-377), Online publication date: 5-Dec-2016.
  13. ACM
    Morris J (2016). The best of both worlds: linear functional programming without compromise, ACM SIGPLAN Notices, 51:9, (448-461), Online publication date: 5-Dec-2016.
  14. ACM
    Oliveira B, Shi Z and Alpuim J Disjoint intersection types Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming, (364-377)
  15. ACM
    Morris J The best of both worlds: linear functional programming without compromise Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming, (448-461)
  16. Fu P and Komendantskaya E A Type-Theoretic Approach to Resolution Revised Selected Papers of the 25th International Symposium on Logic-Based Program Synthesis and Transformation - Volume 9527, (91-106)
  17. Weijers J, Hage J and Holdermans S (2014). Security type error diagnosis for higher-order, polymorphic languages, Science of Computer Programming, 95:P2, (200-218), Online publication date: 1-Dec-2014.
  18. ACM
    Weijers J, Hage J and Holdermans S Security type error diagnosis for higher-order, polymorphic languages Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation, (3-12)
  19. ACM
    Wehr S and Thiemann P (2011). JavaGI, ACM Transactions on Programming Languages and Systems, 33:4, (1-83), Online publication date: 1-Jul-2011.
  20. ACM
    Morris J and Jones M (2010). Instance chains, ACM SIGPLAN Notices, 45:9, (375-386), Online publication date: 27-Sep-2010.
  21. ACM
    Morris J and Jones M Instance chains Proceedings of the 15th ACM SIGPLAN international conference on Functional programming, (375-386)
  22. Siek J The c++0x "concepts" effort Proceedings of the 2010 international spring school conference on Generic and Indexed Programming, (175-216)
  23. ACM
    Jones M and Diatchki I (2008). Language and program design for functional dependencies, ACM SIGPLAN Notices, 44:2, (87-98), Online publication date: 28-Jan-2009.
  24. ACM
    Ahn K and Sheard T (2008). Shared subtypes, ACM SIGPLAN Notices, 44:2, (75-86), Online publication date: 28-Jan-2009.
  25. ACM
    Nystrom N, Saraswat V, Palsberg J and Grothoff C (2008). Constrained types for object-oriented languages, ACM SIGPLAN Notices, 43:10, (457-474), Online publication date: 27-Oct-2008.
  26. ACM
    Nystrom N, Saraswat V, Palsberg J and Grothoff C Constrained types for object-oriented languages Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications, (457-474)
  27. ACM
    Jones M and Diatchki I Language and program design for functional dependencies Proceedings of the first ACM SIGPLAN symposium on Haskell, (87-98)
  28. ACM
    Ahn K and Sheard T Shared subtypes Proceedings of the first ACM SIGPLAN symposium on Haskell, (75-86)
  29. ACM
    Hage J and Holdermans S Heap recycling for lazy languages Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, (189-197)
  30. ACM
    Hage J, Holdermans S and Middelkoop A A generic usage analysis with subeffect qualifiers Proceedings of the 12th ACM SIGPLAN international conference on Functional programming, (235-246)
  31. ACM
    Hage J, Holdermans S and Middelkoop A (2007). A generic usage analysis with subeffect qualifiers, ACM SIGPLAN Notices, 42:9, (235-246), Online publication date: 1-Oct-2007.
  32. ACM
    Hudak P, Hughes J, Peyton Jones S and Wadler P A history of Haskell Proceedings of the third ACM SIGPLAN conference on History of programming languages, (12-1-12-55)
  33. ACM
    Dreyer D, Harper R, Chakravarty M and Keller G Modular type classes Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (63-70)
  34. ACM
    Dreyer D, Harper R, Chakravarty M and Keller G (2007). Modular type classes, ACM SIGPLAN Notices, 42:1, (63-70), Online publication date: 17-Jan-2007.
  35. ACM
    Simonet V and Pottier F (2007). A constraint-based approach to guarded algebraic data types, ACM Transactions on Programming Languages and Systems, 29:1, (1-es), Online publication date: 1-Jan-2007.
  36. ACM
    Kagawa K Polymorphic variants in Haskell Proceedings of the 2006 ACM SIGPLAN workshop on Haskell, (37-47)
  37. ACM
    Järvi J, Gregor D, Willcock J, Lumsdaine A and Siek J Algorithm specialization in generic programming Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation, (272-282)
  38. ACM
    Järvi J, Gregor D, Willcock J, Lumsdaine A and Siek J (2006). Algorithm specialization in generic programming, ACM SIGPLAN Notices, 41:6, (272-282), Online publication date: 11-Jun-2006.
  39. ACM
    Dos Reis G and Stroustrup B (2006). Specifying C++ concepts, ACM SIGPLAN Notices, 41:1, (295-308), Online publication date: 12-Jan-2006.
  40. ACM
    Dos Reis G and Stroustrup B Specifying C++ concepts Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (295-308)
  41. Harrison W A simple semantics for polymorphic recursion Proceedings of the Third Asian conference on Programming Languages and Systems, (37-51)
  42. ACM
    Diatchki I, Jones M and Leslie R High-level views on low-level representations Proceedings of the tenth ACM SIGPLAN international conference on Functional programming, (168-179)
  43. ACM
    Diatchki I, Jones M and Leslie R (2005). High-level views on low-level representations, ACM SIGPLAN Notices, 40:9, (168-179), Online publication date: 12-Sep-2005.
  44. Stehr M (2005). The Open Calculus of Constructions (Part II): An Equational Type Theory with Dependent Types for Programming, Specification, and Interactive Theorem Proving, Fundamenta Informaticae, 68:3, (249-288), Online publication date: 1-Aug-2005.
  45. Stehr M (2005). The Open Calculus of Constructions (Part II): An Equational Type Theory with Dependent Types for Programming, Specification, and Interactive Theorem Proving, Fundamenta Informaticae, 68:3, (249-288), Online publication date: 1-May-2005.
  46. ACM
    Löh A, Clarke D and Jeuring J (2003). Dependency-style generic haskell, ACM SIGPLAN Notices, 38:9, (141-152), Online publication date: 25-Sep-2003.
  47. ACM
    Neubauer M and Thiemann P (2003). Discriminative sum types locate the source of type errors, ACM SIGPLAN Notices, 38:9, (15-26), Online publication date: 25-Sep-2003.
  48. ACM
    Löh A, Clarke D and Jeuring J Dependency-style generic haskell Proceedings of the eighth ACM SIGPLAN international conference on Functional programming, (141-152)
  49. ACM
    Neubauer M and Thiemann P Discriminative sum types locate the source of type errors Proceedings of the eighth ACM SIGPLAN international conference on Functional programming, (15-26)
  50. ACM
    Neubauer M and Thiemann P Type classes with more higher-order polymorphism Proceedings of the seventh ACM SIGPLAN international conference on Functional programming, (179-190)
  51. ACM
    Neubauer M and Thiemann P (2002). Type classes with more higher-order polymorphism, ACM SIGPLAN Notices, 37:9, (179-190), Online publication date: 17-Sep-2002.
  52. ACM
    Martínez López P and Hughes J Principal type specialisation Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation, (94-105)
  53. ACM
    Neubauer M, Thiemann P, Gasbichler M and Sperber M Functional logic overloading Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (233-244)
  54. ACM
    Neubauer M, Thiemann P, Gasbichler M and Sperber M (2002). Functional logic overloading, ACM SIGPLAN Notices, 37:1, (233-244), Online publication date: 1-Jan-2002.
  55. ACM
    Shields M and Meijer E (2001). Type-indexed rows, ACM SIGPLAN Notices, 36:3, (261-275), Online publication date: 1-Mar-2001.
  56. Gao P and Esser R Polymorphic CSP type checking Proceedings of the 24th Australasian conference on Computer science, (156-162)
  57. Gao P and Esser R (2001). Polymorphic CSP type checking, Australian Computer Science Communications, 23:1, (156-162), Online publication date: 1-Jan-2001.
  58. ACM
    Shields M and Meijer E Type-indexed rows Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (261-275)
  59. ACM
    Lewis J, Launchbury J, Meijer E and Shields M Implicit parameters Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (108-118)
  60. ACM
    Jansson P and Jeuring J PolyP—a polytypic programming language extension Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (470-482)
  61. ACM
    Jim T What are principal typings and what are they good for? Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (42-53)
  62. ACM
    Jones M Simplifying and improving qualified types Proceedings of the seventh international conference on Functional programming languages and computer architecture, (160-169)
  63. ACM
    Harper R and Morrisett G Compiling polymorphism using intensional type analysis Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (130-141)
Contributors
  • Portland State University

Recommendations

Reviews

David B. Benson

In Robin Milners famous phrase, “well-typed programs cannot go wrong.” In more detail, programming languages with a type inference and checking system based on type unification are widely recognized as significantly enhancing the creation of correct code without heroics, either in proving or testing. Type system design for programming languages has attempted to balance effectiveness and accuracy with intuitive behavior and sufficient flexibility of the type system. These latter goals have led to languages that not only include parametric polymorphism in the type system, but also have qualified types. Two programming languages with qualified type systems are Haskell and Gofer. The type systems for both of these languages are discussed in this monograph, based on the authors Ph.D. thesis at Oxford University. In a qualified type system, there are implications, not just statements about what the types are. Here is an example. The expression == :: Eq aaa Bool states that the equality operator (==) is polymorphic over the type variable a , but only for those types satisfying the predicate Eq. For these types, the equality operator has parametric polymorphic type aa Bool . The intention is that the equality operator only makes sense for concrete types that can support an equality operation. One may then specify that Int satisfies Eq and additionally specify the runtime primitive operator for runtime equality checking on entities of type Int. The concrete type Int Int does not have a meaningful notion of runtime equality checking, however, so it is not specified as satisfying Eq. A qualified type system is said to support operator overloading. Languages with parametric polymorphism, but without qualified types, have an elegant type inference algorithm [1]. An important problem for languages with qualified types is to create a type inference algorithm that balances effectiveness, accuracy, intuitive behavior, and flexibility. The approach taken in this monograph uses a concept called evidence. This approach is shown to incorporate techniques previously used in the implementation of type inference and checking systems. Chapter 5 is devoted to showing that qualified type systems with evidence have the important property of coherence. That is, the meaning of a term does not depend upon the particular type checking algorithm. Chapter 6 is less rigorously formal than the previous chapter, concentrating on features that might prove useful in practical compilers that have qualified types. This leads nicely into chapter 7, which discusses some implementation techniques, called HTC, for use with the Haskell qualified type system. Chapter 8 presents the type system used in Gofer: This chapter describes GTC, an alternative approach to the use of type classes that avoids the problems associated with context reduction, while retaining much of the flexibility of HTC. In addition, GTC benefits from a remarkably clean and efficient implementation that does not require sophisticated compile-time analysis or transformation. As in the previous chapter we concentrate more on implementation details than on formal properties of GTC. An early description of GTC … was used as the basis for Gofer, a small experimental system based on Haskell. …The two languages are indeed very close, and many programs that are written with one system in mind can be used with the other with little or no changes. On the other hand, the underlying type systems are slightly different: Using explicit type signature declarations it is possible to construct examples that are well typed in one but not in the other. Moreover, I am under the distinct impression that Goferites strongly prefer their language, that it has certain advantages in writing good code, and that the new Haskell standard will adopt portions of the type class examples in Gofer. This short review is not an appropriate place to explicate the subtle differences between Haskell and Gofer. Instead, I encourage you to read this exemplar of computer science research and the appropriate presentation thereof. The writing is excellent, the typesetting is perfect, and the extremely fine point that Jones has made will encourage scholarly contemplation about the nature of type systems.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.