В отличие от большинства языков программирования, каждое значение в Mathematica является выражением. Применение любой операции к любому выражению всегда дает другое выражение. Следовательно, Mathematica эффективно имеет только один тип. Mathematica не выполняет проверку статического типа и, возможно, даже не проверяет типы динамически (во время выполнения).
Например, добавление целочисленного выражения 1
в строковое выражение "foo"
в Mathematica приводит к (бессмысленному) выражению 1 + "foo"
, но без ошибок. В других случаях Mathematica обеспечивает обратную связь о бессмысленном входе, но проверки, которые генерируют эту обратную связь, должны выполняться явно программистом.
Таким образом, справедливо ли описать Mathematica как нетипизированный язык в отличие от статически или динамически типизированного языка?