Mercury

Tela Software:
Mercury
Detalhes de Software:
Versão: 13.05.1
Data de upload: 15 Apr 15
Revelador: Mercury Developers
Licença: Livre
Popularidade: 59

Rating: 2.0/5 (Total Votes: 2)

linguagens de programação Logic foram em torno de mais de vinte anos. Apesar das vantagens esperadas de uma linguagem de programação de muito alto nível com base em teorias bem desenvolvidas da lógica mais de linguagens de programação convencionais (como C, C ++, Pascal e Ada) eles não tiveram impacto significativo sobre a indústria de computadores.
O mercúrio é um novo / linguagem de programação funcional lógica, que combina a clareza e expressividade da programação declarativa com análise e detecção de erro recursos estáticos avançados.
O mercúrio é altamente otimizado algoritmo de execução proporciona eficiência muito superior sistemas de programação lógica existentes, e perto de sistemas de programação convencionais.
Mercury aborda os problemas do desenvolvimento do programa em larga escala, permitindo modularidade, compilação separada, e numerosos otimização / hora trade-offs

O que é novo nesta versão:.

  • Este bugfix versão corrige construir problemas no Solaris e NetBSD e adiciona suporte para selecionar o compilador C # no momento da configuração.
  • Vários outros pequenos bugs foram corrigidos.
  • Existem também algumas pequenas adições para a biblioteca padrão.

O que é novo na versão 13.05:

  • Geração de executáveis ​​de 64 bits no Windows é agora suportado.
  • vezes compilação para muito grandes programas foram melhorados.
  • Várias novas otimizações de representação tipo foram adicionados.
  • O depurador agora tem melhor suporte para lidar com cliques de chamadas mutuamente recursiva na pilha.
  • A ligação para a biblioteca GLFW foi adicionado à distribuição extras.
  • Assembleias gerados com o C # backend agora pode ser assinado com um nome forte.

O que é novo na versão 11.01:

  • Nós adicionamos dois novos tipos de escopos para a língua.
  • Um escopo introduzido por uma das novas palavras-chave require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous e require_failure, como o nome indica, requer a meta dentro do escopo de ter o determinismo dada.
  • Um alcance introduzida pela palavra-chave require_complete_switch requer o objectivo dentro do alcance, se é um interruptor na variável chamada pelo âmbito, ser um interruptor completa, isto é, têm braços para todos os símbolos de função do tipo do comutada-on variável.
  • Nós adicionamos modos semidet para hash_table.fold / 4 e version_hash_table.fold / 4.
  • Nós adicionamos novos predicados e funções para o módulo assoc_list. Os predicados map_keys_only / 3 map_values_only / 3 e map_values ​​/ 3 complementar as funções do mesmo nome. Os predicados filtrar / 3, negated_filter / 3, filtrar / 4, fundir / 3, que também tem versões de função, fazer trabalhos muito semelhantes aos predicados de mesmo nome no módulo de lista, mas fazer as operações relevantes em chaves em vez de toda elementos da lista.
  • Nós mudamos o módulo de avaliação preguiçosa fora da distribuição extras e em um novo módulo da biblioteca padrão chamado 'preguiçoso'. Também foi feita backend-agnóstico.
  • Fizemos alterações no módulo de lista da biblioteca padrão:
  • Nós adicionamos um novo list.member_index0 predicado / 3. É como list.member / 2, exceto que ele também tem um parâmetro que representa o índice baseado em zero do elemento dentro da lista.
  • Nós adicionamos um novo list.map3_foldl predicado / 7, que mapeia mais de uma lista produzindo três listas e um valor dobrado.
  • Nós adicionamos modos semidet com acumuladores exclusivos para list.foldl3 / 8, list.foldl4 / 10, list.foldl5 / 12, e list.foldl6 / 14.
  • Nós adicionamos os predicados dividir / 4 e divide_by_set / 4 para o módulo tree_bitset da biblioteca padrão.
  • Nós adicionamos os predicados set_ctree234.member / 2 e set_ctree234.non_empty / 1. Temos adicionar a função set_ctree234.from_list / 1.
  • Nós adicionamos o set_bbbtree.count o predicado / 2 e a função set_bbbtree.count / 1. Estes substituem o predicado set_bbbtree.size / 2, que agora está obsoleto.
  • Nós adicionamos o predicado set_ordlist.non_empty / 1.
  • Nós adicionamos o set_tree234.non_empty predicado / 1 eo set_tree234.from_list função / 1.
  • Nós adicionamos os predicados set_unordlist.non_empty / 1 e set_unordlist.count / 2, ea função set_unordlist.count / 1.
  • Todos os módulos da biblioteca padrão que implementam a ADT set, (set, set_ordlist, set_unordlist, set_bbbtree, set_tree234 e set_ctree234), agora apoiar dobrando conjuntos com até seis acumuladores. Modos que fornecem acumuladores originais e principalmente são únicas em conjunto vezes também foram adicionados.
  • Fizemos as seguintes alterações para o módulo matriz da biblioteca padrão:
  • Nós adicionamos as funções unsafe_elem / 2 e acrescentar / 2.
  • Nós adicionamos os predicados svset / 4, unsafe_svset / 4, foldl2 / 4, foldl2 / 6, foldr / 4, foldr2 / 6, map_foldl / 5, map_corresponding_foldl / 6, e membro / 2.
  • Nós adicionamos os predicados version_array.foldl2 / 6, version_array.foldr / 4, e version_array.foldr2 / 6 para a biblioteca padrão.
  • Nós adicionamos modos semidet com acumuladores originais e principalmente-exclusivos para os seguintes predicados:
  • bimap.foldl2 / 6
  • bimap.foldl3 / 8
  • cord.foldl_pred / 4
  • cord.map_foldl / 5
  • list.map_corresponding_foldl2 / 8
  • list.map_corresponding_foldl3 / 10
  • list.map_corresponding3_foldl / 7
  • map.foldl3 / 8
  • Nós adicionamos o predicado unsorted_aggregate2 / 6 para o módulo de soluções da biblioteca padrão.
  • Nós adicionamos vários predicados e funções para o módulo de exigir da biblioteca padrão. Os predicados desculpe / 2 e desculpe relatório / 3 a ausência de um recurso, enquanto os predicados inesperados / 2 e inesperadas / 3 Relatório um erro interno no programa; todos têm versões de função também. O predicado esperar / 3 chamadas inesperado se a condição não for satisfeita. Agora temos de esperar / 4, bem como esperava / 3. Para esperar / 4, bem como esperava / 3, os primeiros e últimos argumentos são a condição de espera e a mensagem de erro, respectivamente, mas com esperar / 4, existem dois argumentos no meio para especificar a localização do erro (normalmente o nome do módulo e do predicado respectivamente). Nós também adicionamos expect_not / 3 e expect_not / 4, que são como esperar / 3 e esperar / 4, respectivamente, exceto que eles esperam que a condição de ser * * falsa, não é verdade.

O que é novo na versão 10.04.2:

  • Esta versão é uma versão de correção de bugs. Uma série de problemas que causaram o compilador para abortar foram corrigidos, algumas operações RTTI quebrados no grau java foram corrigidos, e nós adicionamos uma solução para um problema com GCC versão 4.4.

Limitações :

  • A implementação atual ainda não implementar completamente o idioma Mercury. As principais limitações da implementação atual são os seguintes:
  • Não permitimos aliasing definitiva no sistema de modo. Sem isso, os modos parcialmente instanciados são inutilizáveis, e assim são aninhados modos únicos.
  • O compilador não ainda usar estrutura de reutilização ou de tempo de compilação de coleta de lixo para explorar modos únicos.
  • Tipo e modo de inferência são um pouco imperfeito.

  • Além disso, as decisões de design neste implemenation impuseram os seguintes limites:
  • Os predicados e funções podem ter, no máximo, cerca de mil argumentos.

  • termos
  • de ordem superior pode ter, no máximo, cerca de 500 argumentos.

Programas semelhantes

Comentário para Mercury

Comentários não encontrado
Adicionar comentário
Ligue imagens!