Безопасность типов - это особенность языка, созданного для того, чтобы оправдать знаменитый слоган [Робина Милнера] [1] о программировании ML: хорошо напечатанные программы не могут ошибаться .
Слоган требует некоторой распаковки, прежде чем его можно будет правильно понять, но в основном это означает, что программы не могут завершиться сбоем из-за ошибки типа времени выполнения, то есть когда параметры, примененные к конструктору или функции, имеют значения несовместимого типа.
Рассмотрим язык, который допускает целые числа, целочисленные функции в качестве значений первого класса, абстракцию функций и применение частичных функций, и который определяет обычные целочисленные арифметические операторы как двоичные функции. Свойство типа безопасности - это то, что компилятор обеспечивает, чтобы оба аргумента оператора сложения были выражениями, которые сводятся к целым числам, а не к функциям. Если программа хорошо написана, то компилятор может создать для нее исполняемый объект. В противном случае он отмечает ошибку программирования и прерывает работу.