5. LINGUAGEM ML
- Programas são coleções de definições.
- O modo básico de processamento é a
construção e aplicação de funções. Funções Built-in são as funções primitivas (mais
simples). Funções de Alta Ordem são aquelas que que tomam funções como parâmetro, produzem
uma função como seu resultado, ou ambos.
- Chamadas de funções introduzem novas amarrações, uma vez que
uma função é vista como um valor.
- Funções são livres de efeitos colaterais, pois não
provocam alteração na memória ou estado do programa.
- ML é fortemente tipada e a programação é baseada em regras.
- ML é case sensitive, isto é, diferencia letras
minúsculas de letras maiúsculas.
- ML suporta polimorfismo, o qual permite às funções usarem argumentos de vários tipos.
- ML tem um sistema de inferência que permite a
verificação de tipos sem precisar declarar o tipo de cada variável. Por exemplo:
fun circunf (r) = 3.14159 * r * r
Nesta função o tipo (real) é inferido do tipo da constante da expressão (3.14159).
Portanto, só poderão ser passados argumentos do tipo real.
- ML implementa um conceito comum nas linguagens de programação
funcional: "Pattern Matching" (ou correspondência de padrões). Neste caso,
uma função pode ter várias definições, de acordo com o "padrão"
especificado por um datatype.
Por exemplo:
datatype day = Mon | Tue | Wed | Thu | Fri |
Sat | Sun
fun day_off (Sun) = true
| day_off (Sat) = true
| day_off (Mon) = false
| day_off (Tue) = false
| day_off (Wed) = false
| day_off (Thu) = false
| day_off (Fri) = false
Pode-se observar que a função day_off é definida para um
certo número de casos; dependendo do parâmetro na chamada da função o caso apropriado é
selecionado. A verificação é feita seqüencialmente a partir do primeiro caso.
- ML permite a amarração de um nome a um valor através da
declaração value. Por exemplo:
val x = 10;
- Estruturas de dados em ML:
- Listas: [1, 3, 4, 5];
- Tuplas: (1, 7.3, 6, 4.8);
- Nomeados: type dados = string * int * real;
- Estruturados e Enumerados: datatype ponto = p of real * real;
- Controle de fluxo em ML:
- A recursão é o único método de repetição.
- A seleção é feita através dos seguintes comandos:
if <exp> then <then_exp>
else <else_exp>;
case <exp> of <match>;
Volta para a página inicial
Comentários, dúvidas, sugestões, envie um mail para
Juliene ou para Isabel
|