В CL как я теоретически понимаю, имя переменной не имеет типа. А сама переменная имеет неизменный тип (строка, число и т.п.). А когда мы совершаем манипуляции с переменными (сложить A с B) - тип переменных связанных с именами A и B определяется динамически в процессе исполнения программы, т.к. среда исполнения может не знать наверняка что за переменные и как давно привязали к этим именам.