Manual MosML
Juliene Lopes Gonzalez
Orientada por Isabel Harb Manssour
 

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

 ../Imagens/EMBAN15.GIF (1469 bytes)

../Imagens/E-MAIL.JPG (3237 bytes) Comentários, dúvidas, sugestões, envie um mail para Juliene ou para Isabel

../Imagens/EMBAN15.GIF (1469 bytes)

Última alteração em 15 de Outubro de 2000.