  Dynamically typed programming languages are popular in education and the
software industry. While presenting a low barrier to entry, they suffer from
run-time type errors and longer-term problems in code quality and
maintainability. Statically typed languages, while showing strength in these
aspects, lack in learnability and ease of use. In particular, fixing type
errors poses challenges to both novice users and experts. Further,
compiler-type error messages are presented in a static way that is biased
toward the first occurrence of the error in the program code. To help users
resolve such type errors, we introduce ChameleonIDE, a type debugging tool that
presents type errors to the user in an unbiased way, allowing them to explore
the full context of where the errors could occur. Programmers can interactively
verify the steps of reasoning against their intention. Through three studies
involving real programmers, we showed that ChameleonIDE is more effective in
fixing type errors than traditional text-based error messages. This difference
is more significant in harder tasks. Further, programmers actively using
ChameleonIDE's interactive features are shown to be more efficient in fixing
type errors than passively reading the type error output.
