[フレーム]
BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Unlock the full InfoQ experience

Unlock the full InfoQ experience by logging in! Stay updated with your favorite authors and topics, engage with content, and download exclusive resources.

Login
or

Não tem uma conta no InfoQ?

Cadastre-se agora!
  • Siga seus tópicos e editores favoritosAcompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.
  • Mais interação, mais personalizaçãoCrie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.
  • Fique por dentro das novidades!Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

Tópicos

Escolha a região

Início Notícias Clojure 1.9 chega com Spec e novas funcionalidades para a linguagem

Clojure 1.9 chega com Spec e novas funcionalidades para a linguagem

23 mar. 2018 1 min(s) de Leitura

Como informado anteriormente pelo InfoQ, a funcionalidade mais interessante na última versão do Clojure 1.9 é o Spec, que fornece um sistema padrão e integrado para a especificações e testes de dados e funções.

Aproveitando o trabalho em outros sistemas contratuais, como o Racket, Spec visa permitir validar automaticamente o código de Clojure, além de suportar várias tarefas, como testes generativos, relatórios de erros, desestruturação e muito mais. É assim que você pode especificar um mapa, usando especificações / chaves:

(spec/keys :req [::x ::y (or ::secret (and ::user ::pwd))]
 :opt [::z])

As chaves usadas em uma especificação de mapa são algo remanescentes de união de etiquetas discriminadas como encontradas em outras linguagens, na medida em que você define seus tipos globalmente para um namespace:

(spec/def ::x integer?)
(spec/def ::y integer?)
(spec/def ::z integer?)
(spec/def ::secret string?)

Isso significa que a mesma especificação de tipo é aplicada a ocorrências de uma determinada chave em qualquer mapa definido no mesmo módulo. Se você quiser usar as chaves definidas em um namespace diferente, você pode usar a nova sintaxe de mapeamento no namespace:

#:types{ :x 1
 :y 2
 :secret "xyz" }

Isto é interpretado como:


{ :types/x 1
 :types/y 2
 :types/secret "xyz }

Enquanto o Clojure 1.9 já está em uma versão estável, Spec ainda está em uma versão alfa e as bibliotecas correspondentes devem ser incluídas manualmente. Ser alfa implica que a compatibilidade da API não é garantida.

Para aumentar a expressividade do Spec, o Clojure 1.9 adicionou vários predicados novos, incluindo booleano?, double?, simple-symbol e muitos mais. Ainda na frente da linguagem, clojure.core apresenta as seguintes novas funções:

  • bounded-count, que permite contar os elementos de uma coleção sem que chegue em um determinado limite.
  • swap-vals! and reset-vals!, duas novas funções atômicas que retornam o valor antigo e novo.
  • halt-when, um transducer que termina a transdução quando um determinado predicado é satisfeito.

Clojure 1.9 também apresenta várias melhorias de performance, incluindo seq otimizado e desestruturação, cache de derivação de classe para acelerar a compilação e outros.

Clojure 1.9 pode ser instalado usando brew no macOS e um script de instalação no Linux. No Windows, você ainda precisa instalar o Leiningen ou o Boot.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo publicado no tópico Java

Tópicos Relacionados:
  • Conteúdo editorial relacionado

    • Conteúdo relacionado de patrocinadores

Conteúdo educacional

InfoQ Brasil Newsletter

Receba semanalmente um resumo dos conteúdos publicados. Junte-se a uma comunidade com dezenas de milhares de profissionais de alta senioridade. Veja um exemplo

Nós prezamos pela sua privacidade.

BT

AltStyle によって変換されたページ (->オリジナル) /