Toda linguagem de programação define alguns tipos básicos ou primitivos de dados a partir dos quais pode-se declarar variáveis daquele tipo. Basicamente a diferenciação ou qualificação dos tipos de dados deve-se a quantidade de espaço ocupada pelos mesmos na memória do computador, como também, ao tipo da informação a que se destina armazenar. O interpretador Hall aceita 4 tipos de dados básicos, a saber:
Quando declaramos uma variável de um tipo qualquer, estamos na verdade delimitando o conjunto de valores que ela poderá assumir bem como os tipos de operações que podemos realizar com elas. As linguagens de programação também provêm recursos para se definir outros tipos de dados a partir desses tipos primitivos. Esses novos tipos construídos são denominados tipos estruturados ou complexos, porque são derivados dos tipos primitivos ou mais simples. Exemplos desses tipos estruturados são os vetores, matrizes, registros e conjuntos.