ABSTRACT
Dealing with statically-typed languages and their complex type systems is problematic for programmers of all levels. Resolving confusing type errors is a time consuming and not always successful process.
In this tool demonstration we give an overview of Scalad, an interactive tool that can explain decisions made by the existing typechecker of a multi-paradigm programming language by visualizing the whole process in the form of a proof tree. The tool works for both type correct and incorrect programs, making it suitable for educational purposes as well as debugging. We provide examples on how the tool can be used to understand typing puzzles. The debugger comes with an expandable search mechanism that can precisely guide users in finding answers to the typechecking problems and improve exploration time.
- {Boustani and Hage(2011)} N. Boustani and J. Hage. Improving type error messages for generic java. Higher Order Symbol. Comput., June 2011. Google ScholarDigital Library
- {Chitil(2001)} O. Chitil. Compositional explanation of types and algorithmic debugging of type errors. In ICFP, pages 193--204, 2001. Google ScholarDigital Library
- {Heeren et al.(2003)Heeren, Leijen, and van IJzendoorn} B. Heeren, D. Leijen, and A. van IJzendoorn. Helium, for learning haskell. In Haskell, pages 62--71, 2003. Google ScholarDigital Library
- {Jun et al.(2002)Jun, Michaelson, and Trinder} Y. Jun, G. Michaelson, and P. Trinder. Explaining polymorphic types. The Computer Journal, 45:2002, 2002.Google Scholar
- {Odersky et al.(1999)Odersky, Sulzmann, and Wehr} M. Odersky, M. Sulzmann, and M. Wehr. Type inference with constrained types. TAPOS, 5(1):35--55, 1999. Google ScholarDigital Library
- {Oliveira et al.(2010)Oliveira, Moors, and Odersky} B. C. Oliveira, A. Moors, and M. Odersky. Type classes as objects and implicits. In OOPSLA, pages 341--360, 2010. Google ScholarDigital Library
- {Plociniczak and Odersky(2012)} H. Plociniczak and M. Odersky. Implementing a type debugger for scala. In APPLC, 2012.Google Scholar
- {Stuckey and Sulzmann(2005)} P. J. Stuckey and M. Sulzmann. A theory of overloading. ACM Trans. Program. Lang. Syst., 27:1216--1269, November 2005. Google ScholarDigital Library
- {Sulzmann(2002)} M. Sulzmann. An overview of the chameleon system. In APLAS, pages 16--30, 2002.Google Scholar
Index Terms
- Scalad: an interactive type-level debugger
Recommendations
Java bytecode as a typed term calculus
PPDP '02: Proceedings of the 4th ACM SIGPLAN international conference on Principles and practice of declarative programmingWe propose a type system for the Java bytecode language, prove the type soundness, and develop a type inference algorithm. In contrast to the existing proposals, our type system yields a typed term calculus similar to type systems of lambda calculi. ...
Polymorphic delimited continuations
APLAS'07: Proceedings of the 5th Asian conference on Programming languages and systemsThis paper presents a polymorphic type system for a language with delimited control operators, shift and reset. Based on the monomorphic type system by Danvy and Filinski, the proposed type system allows pure expressions to be polymorphic. Thanks to the ...
Typeless programming in Java 5.0
PPPJ '06: Proceedings of the 4th international symposium on Principles and practice of programming in JavaWith the introduction of Java 5.0 [9] the type system has been extended by parameterized types, type variables, type terms, and wildcards. As a result very complex types can arise. The termVector<Vector<AbstractList<Integer>>>is for example a correct ...
Comments