skip to main content
research-article

Experience report: applying random testing to a base type environment

Published:25 September 2013Publication History
Skip Abstract Section

Abstract

As programmers, programming in typed languages increases our confidence in the correctness of our programs. As type system designers, soundness proofs increase our confidence in the correctness of our type systems. There is more to typed languages than their typing rules, however. To be usable, a typed language needs to provide a well-furnished standard library and to specify types for its exports.

As software artifacts, these base type environments can rival typecheckers in complexity. Our experience with the Typed Racket base environment---which accounts for 31% of the code in the Typed Racket implementation---teaches us that writing type environments can be just as error-prone as writing typecheckers.

We report on our experience over the past two years of using random testing to increase our confidence in the correctness of the Typed Racket base environment.

References

  1. Stefan Berghofer and Tobias Nipkow. Random testing in Isabelle/HOL. In Proc. Conf. on Software Engineering and Formal Methods, pp. 230--239, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Koen Claessen and John Hughes. QuickCheck: a lightweight tool for random testing of Haskell programs. In Proc. International Conf. on Functional Programming, pp. 268--279, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Robert DeLine and Manuel Fähndrich. Enforcing high-level protocols in low-level software. In Proc. Conf. on Programming Language Design and Implementation, pp. 59--69, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. Semantics Engineering with PLT Redex. MIT Press, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Matthew Flatt and PLT. Reference: Racket. PLT Inc., PLT-TR-2010-1, 2010. http://racket-lang.org/tr1/Google ScholarGoogle Scholar
  6. C. Barry Jay. Programming in FISh. International Journal on Software Tools for Technology Transfer 2(3), pp. 307--315, 1999.Google ScholarGoogle ScholarCross RefCross Ref
  7. Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay McCarthy, Jon Rafkind, Sam Tobin-Hochstadt, and Robert Bruce Findler. Run your research: on the effectiveness of lightweight mechanization. In Proc. Symp. on Principles of Programming Languages, pp. 285--296, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Casey Klein and Robert Bruce Findler. Randomized testing in PLT Redex. In Proc.Works. Scheme and Functional Programming, pp. 26--36, 2010.Google ScholarGoogle Scholar
  9. Casey Klein, Matthew Flatt, and Robert Bruce Findler. The Racket virtual machine and randomized testing. Higher-Order and Symbolic Computation, 2013.Google ScholarGoogle Scholar
  10. Lindsey Kuper and Ryan Newton. A lattice-theoretical approach to deterministic parallelism with shared state. Indiana University, TR702, 2012.Google ScholarGoogle Scholar
  11. Rex Page, Carl Eastlund, and Matthias Felleisen. Functional programming and theorem proving for undergraduates: a progress report. In Proc. Works. Functional and Declarative Programming in Education, pp. 21--30, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Vincent St-Amour, Sam Tobin-Hochstadt, Matthew Flatt, and Matthias Felleisen. Typing the numeric tower. In Proc. Practical Aspects of Declarative Languages, pp. 289--303, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Sam Tobin-Hochstadt and Matthias Felleisen. The design and implementation of Typed Scheme. In Proc. Symp. on Principles of Programming Languages, pp. 395--406, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Jesse A. Tov and Riccardo Pucella. Practical affine types. In Proc. Symp. on Principles of Programming Languages, pp. 447--458, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Experience report: applying random testing to a base type environment

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 48, Issue 9
        ICFP '13
        September 2013
        457 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2544174
        Issue’s Table of Contents
        • cover image ACM Conferences
          ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
          September 2013
          484 pages
          ISBN:9781450323260
          DOI:10.1145/2500365

        Copyright © 2013 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 25 September 2013

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!