F# 9, a versão mais recente da linguagem funcional de código aberto da Microsoft, foi lançada com suporte para tipos de referência anuláveis e expressões de computação de corpo vazio. Melhorias na biblioteca padrão também são apresentadas, incluindo funções de amostragem aleatória.
O F# 9 foi lançado em conjunto com a plataforma de software .NET 9 em 12 de novembro. Instruções sobre como começar a usar o F# podem ser encontradas em dotnet.microsoft.com.
Com tipos de referência anuláveis no F# 9, o F# agora tem uma maneira segura de lidar com tipos de referência que podem ter null
como um valor válido. Embora o F# tenha sido projetado para evitar null
no entanto, ele pode se infiltrar em bibliotecas .NET escritas em C#. F# 9 também introduz suporte para expressões de computação vazias. Escrever uma expressão de computação vazia resultará em uma chamada para o construtor de expressão de computação Zero
método. Esta é uma sintaxe mais natural em comparação com a disponível anteriormente builder { () }
disse a Microsoft.
Na biblioteca padrão FSharp.Core em F# 9, o List
, Array
e Seq
os módulos têm novas funções para amostragem aleatória e embaralhamento, tornando o F# mais fácil de usar para ciência de dados comum, aprendizado de máquina e outros cenários onde a aleatoriedade é necessária. Também com a biblioteca padrão, Shuffle
funções retornam uma nova coleção do mesmo tipo e tamanho, com cada item em uma posição misturada aleatoriamente. Em outra melhoria da biblioteca padrão, os desenvolvedores agora podem usar expressões de coleção C# para inicializar listas e conjuntos F# a partir de C#.
F# também traz melhorias de desempenho. As verificações de igualdade agora são mais rápidas e alocam menos memória, e o compilador agora gera código otimizado para mais instâncias de start..finish
e start..step..finish
expressões.
Outros novos recursos e melhorias no F# 9:
- As diretivas hash agora podem aceitar argumentos que não sejam strings. Anteriormente, as diretivas hash para o compilador permitiam apenas argumentos de string passados entre aspas.
- O
#help
A diretiva no F# Interactive agora mostra a documentação para um determinado objeto ou função, que agora pode ser passada sem aspas. - Mensagens de diagnóstico novas ou aprimoradas ou locais de diagnóstico mais precisos são apresentados no F# 9, como uniões com campos duplicados e incompatibilidade de contagem de argumentos de padrão ativo.
- Para se alinhar a um padrão em algumas bibliotecas .NET, onde os métodos de extensão são definidos com os mesmos nomes que as propriedades intrínsecas de um tipo, o F# agora resolve esses métodos de extensão em vez de falhar na verificação de tipo.