ML (linguagem de programação)
Este artigo não cita fontes confiáveis. (Maio de 2015) |
ML é uma linguagem de programação funcional de proposta geral desenvolvida por Robin Milner e outros no final dos anos 1970 na Universidade de Edimburgo, cuja sintaxe foi inspirada pelo ISWIM. É considerada uma linguagem funcional impura, por permitir a programação imperativa, ao contrário de outras linguagens funcionais como Haskell.
ML | |
---|---|
Paradigma | |
Surgido em | 1973 |
Criado por | Robin Milner e outros na Universidade de Edimburgo |
Estilo de tipagem |
|
Dialetos | |
Influenciada por | ISWIM |
Influenciou |
História
editarStandard ML foi criada por pesquisadores da LFCS (Laboratory for Foundations of Computer Science) na década de 1980. Em 1987, Robin Milner e LFCS ganharam o Prêmio BCS Award for Technical Excellence por trabalhar no Standard ML.
ML foi originalmente concebida como uma metalinguagem para o sistema de prova de teorema de Edimburgo LCF, mas evoluiu para uma linguagem de propósito geral de sucesso. Esta linguagem foi padronizada em 1990 e revista em 1997 como Standard ML 97.
Características
editarML é conhecida como uma linguagem funcional e impura, por permitir efeitos colaterais e, por esta razão também é considerada uma linguagem de programação multi-paradigma.
As características do ML são incluir chamada-a-valor avaliação e estratégia, em primeira classe funções de gerenciamento automático de memória através de coleta de lixo, polimorfismo paramétrico, tipagem estática, tipo inferência, tipos de dados algébricos, correspondência padrão, exceção e manuseio.
Hoje existem vários idiomas no ML família; os dois principais dialetos são Standard ML e Caml, mas existem outros que influenciaram muitas outras línguas, como Haskell, Cyclone, e Nemerle.
Os pontos fortes da ML são aplicados principalmente em língua e manipulação (compiladores, analisadores, provadores de teoremas), mas é uma linguagem de aplicação geral também utilizado em bioinformática, sistemas financeiros, e aplicativos, incluindo um banco de dados genealógicos, um clienteP2P / programa servidor, etc..
Exemplos de código
editarOlá Mundo
editarO Programa Olá Mundo de linguagens funcionais é tipicamente a função Fatorial, como expressado abaixo em ML:
fun fac : (int -> int) 0 = 1
| fac n = n * fac (n - 1);
O fatorial foi definido como uma função recursiva, com uma única condição de parada, assemelhando-se as descrições dessa função em livros de Matemática. Parte da primeira linha é opcional, e descreve os tipos da função.
Outros exemplos de funções
editarfun quadrado(x : real) = x * x;
fun reverso(L) =
if L = nil then nil
else reverso(tl(L)) @ [hd(L)];
(* máximo entre 3 reais - note que ML deduz que b e c são reais mesmo sem declaração *)
fun maior3(a : real, b, c) =
if a > b then
if a > c then a
else c
else
if b > c then b
else c;
Bibliografia
editar- ULLMAN, Jeffrey D. (1998). Elements of ML Programming. ML97 Edition. Englewood Cliffs, New Jersey, EUA: Prentice Hall. 383 páginas. ISBN 0-13-790387-1
Ligações externas
editar- «Laboratory for Foundations of Computer Science» (em inglês)
- «Moscow ML, uma implementação popular de ML» (em inglês)
- Standard ML de «New Jersey, outra popular implementação» Verifique valor
|url=
(ajuda) (em inglês) - «F#, uma implementação de ML utilizando o Microsoft .NET» (em inglês)
- «MLton, compilador ML com otimizadores» (em inglês)