Например, добавляя (ранее необъявленный) интервал и строка в псевдокоде:
x = 1;
y = "2";
x + y = z;
Я видел языки со строгим контролем типов, которые не позволили бы добавлять два типа, но это также со статическим контролем типов, таким образом, невозможно иметь ситуацию как вышеупомянутый. С другой стороны, я видел языки со слабым контролем типов, которые позволяют вышеупомянутое и со статическим контролем типов.
Есть ли какие-либо языки, которые с динамическим контролем типов, но также со строгим контролем типов также, так, чтобы часть кода выше не была бы допустима?
Конечно: Python.
>>> a = 3
>>> b = "2"
>>> a+b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> b = 2
>>> a+b
5
Ruby динамически типизирован, но строго типизирован.
irb(main):001:0> 2 + "3"
TypeError: String can't be coerced into Fixnum
from (irb):1:in `+'
from (irb):1
irb(main):002:0> "3" + 2
TypeError: can't convert Fixnum into String
from (irb):2:in `+'
from (irb):2
irb(main):003:0> "3" + 2.to_s
=> "32"
irb(main):004:0> 2 + "3".to_i
=> 5