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.
- Stefan Berghofer and Tobias Nipkow. Random testing in Isabelle/HOL. In Proc. Conf. on Software Engineering and Formal Methods, pp. 230--239, 2004. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. Semantics Engineering with PLT Redex. MIT Press, 2009. Google Scholar
Digital Library
- Matthew Flatt and PLT. Reference: Racket. PLT Inc., PLT-TR-2010-1, 2010. http://racket-lang.org/tr1/Google Scholar
- C. Barry Jay. Programming in FISh. International Journal on Software Tools for Technology Transfer 2(3), pp. 307--315, 1999.Google Scholar
Cross Ref
- 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 Scholar
Digital Library
- Casey Klein and Robert Bruce Findler. Randomized testing in PLT Redex. In Proc.Works. Scheme and Functional Programming, pp. 26--36, 2010.Google Scholar
- Casey Klein, Matthew Flatt, and Robert Bruce Findler. The Racket virtual machine and randomized testing. Higher-Order and Symbolic Computation, 2013.Google Scholar
- Lindsey Kuper and Ryan Newton. A lattice-theoretical approach to deterministic parallelism with shared state. Indiana University, TR702, 2012.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Jesse A. Tov and Riccardo Pucella. Practical affine types. In Proc. Symp. on Principles of Programming Languages, pp. 447--458, 2011. Google Scholar
Digital Library
Index Terms
Experience report: applying random testing to a base type environment
Recommendations
Experience report: applying random testing to a base type environment
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingAs 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 ...
Experience report: type-checking polymorphic units for astrophysics research in Haskell
Haskell '14: Proceedings of the 2014 ACM SIGPLAN symposium on HaskellMany of the bugs in scientific programs have their roots in mistreatment of physical dimensions, via erroneous expressions in the quantity calculus. Now that the type system in the Glasgow Haskell Compiler is rich enough to support type-level integers ...
Experience report: type-checking polymorphic units for astrophysics research in Haskell
Haskell '14Many of the bugs in scientific programs have their roots in mistreatment of physical dimensions, via erroneous expressions in the quantity calculus. Now that the type system in the Glasgow Haskell Compiler is rich enough to support type-level integers ...







Comments