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 nullno 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, Arraye 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.