Linguagem mercury

Disponível somente no TrabalhosFeitos
  • Páginas : 5 (1059 palavras )
  • Download(s) : 0
  • Publicado : 24 de abril de 2012
Ler documento completo
Amostra do texto
O que é Mercury?
Linguagens de programação lógica tem sido em torno de mais de 20 anos. Apesar das vantagens esperadas de uma linguagem de nível elevado de programação baseada em teorias bem desenvolvidas de lógica sobre linguagens de programação convencionais (como C, C + +, Pascal e Ada) não tiveram impacto significativo sobre a indústria de computadores.
O mercúrio é uma nova lógica /linguagem de programação funcional, que combina a clareza e a expressividade da programação declarativa com a análise estática e recursos avançados de detecção de erros. Seu algoritmo de execução altamente otimizado oferece uma eficiência muito superior a sistemas de programação existentes lógica, e perto de programação de sistemas convencionais. Mercury aborda os problemas de desenvolvimento em largaescala do programa, permitindo a compilação modularidade, separado, e numerosos otimização / hora trade-offs.
As principais características de Mercúrio são:
* Mercury é puramente declarativa: predicados e funções em Mercúrio não têm efeitos colaterais não-lógicos.
Mercury faz I / O através de predicados built-in e uma biblioteca que levam um antigo estado do mundo e alguns outros parâmetros,e retornar um novo estado do mundo e possivelmente alguns outros resultados. A linguagem exige que o argumento de entrada representa o antigo estado do mundo é a última referência para o antigo estado do mundo, permitindo assim que o estado do mundo a ser atualizado destrutiva. A linguagem também exige que os I / O ocorrer somente em algumas partes do programa onde backtracking não seránecessário.
Mercury lida com estruturas de dados dinâmicas não através do Prolog assert / retrair, mas fornecendo vários tipos de dados abstratos na biblioteca Mercury padrão que gerenciar coleções de itens com diferentes operações e compensações.
* O mercúrio é uma linguagem fortemente tipada. Sistema de Mercúrio tipo é baseada na lógica muitos classificados com polimorfismo paramétrico, muitosemelhante aos sistemas tipo de modernas linguagens funcionais como Haskell e ML. Programadores devem declarar os tipos que precisam utilizar as declarações como
* : - Lista Tipo (T) ---> [], [T | lista (T)].
* : - Tipo de talvez (T) ---> sim (T); não.

Eles também devem declarar o tipo de assinaturas dos predicados que definem, por exemplo
: - Pred append (list (T), lista (T),lista (T)).

O compilador infere os tipos de todas as variáveis ​​no programa. Erros de tipo são relatados em tempo de compilação.
* Mercury é uma linguagem fortemente moded. O programador deve declarar o estado de instanciação dos argumentos dos predicados no momento da chamada para o predicado e no momento do sucesso do predicado. Atualmente, apenas um subconjunto do sistema de modo a que sedestina implementadas. Esse subconjunto de forma eficaz requer argumentos para ser de entrada totalmente (solo no momento da chamada e, no momento de sucesso) ou saída totalmente (livre no momento da chamada e do solo na época de sucesso).
Um predicado pode ser usado em mais de um modo. Por exemplo, anexar geralmente é usado em pelo menos estes dois modos:
: - Modo de append (in, in, out).
:- Modo de append (out, out, in).

Se um predicado tem apenas um modo, as informações modo pode ser dada na declaração de predicado.
: - Pred fatorial (int:: na, int:: out).

O compilador irá inferir o modo de cada builtin unificação chamada, e outros no programa. Ele vai reordenar os corpos de cláusulas como necessário encontrar uma esquerda para a direita ordem de execução e, se ele nãopode fazer isso, ele rejeita o programa. Como verificação de tipo, isto significa que uma grande classe de erros são detectados em tempo de compilação.
* Mercúrio tem um sistema de determinismo forte. Para cada modo de cada predicado, o programador deve declarar se o predicado sucederá exatamente uma vez (det), no máximo uma vez (semidet), pelo menos uma vez (multi) ou um número arbitrário...
tracking img