Introdução ao F# no Visual Studio para Mac

Importante

A Microsoft anunciou a desativação do Visual Studio para Mac. O Visual Studio para Mac não terá mais suporte a partir de 31 de agosto de 2024. As alternativas incluem:

Para obter mais informações, confira o comunicado de desativação do Visual Studio para Mac.

F# é compatível com o Visual Studio for Mac IDE. Verifique se você tem o Visual Studio para Mac instalado.

Criando um Aplicativo de console

Um dos projetos mais básicos do Visual Studio para Mac é o Aplicativo de Console. Veja como fazer isso. Quando o Visual Studio para Mac estiver aberto:

  1. No menu Arquivo, aponte para Nova solução.

  2. Na caixa de diálogo Novo Projeto, há dois modelos diferentes para o Aplicativo de Console. Um modelo está em Outro -> .NET que tem como alvo o .NET Framework. O outro modelo está no .NET Core -> Aplicativo que tem como destino o .NET Core. Qualquer modelo deve funcionar para o propósito deste artigo.

  3. Em aplicativo de console, altere C# para F# se necessário. Escolha o botão Próximo para prosseguir!

  4. Dê um nome ao seu projeto e escolha as opções desejadas para o aplicativo. Observe o painel de visualização ao lado da tela, que mostrará a estrutura de diretórios que será criada com base nas opções selecionadas.

  5. Clique em Criar. Agora você deve ver um projeto F# no Gerenciador de Soluções.

Escrevendo o seu código

Primeiro, vamos começar escrevendo um código. Verifique se o arquivo Program.fs está aberto e substitua seu conteúdo pelo seguinte:

module HelloSquare

let square x = x * x

[<EntryPoint>]
let main argv =
    printfn "%d squared is: %d!" 12 (square 12)
    0 // Return an integer exit code

No exemplo de código anterior, foi definida uma função square que recebe uma entrada chamada x e a multiplica por si mesma. Como o F# usa Inferência de tipo, o tipo de x não precisa ser especificado. O compilador F# entende os tipos em que a multiplicação é válida e atribuirá um tipo a x com base em como square é chamado. Se você passar o mouse sobre square, deverá ver o seguinte:

val square: x:int -> int

Isso é o que é conhecido como assinatura do tipo da função. Ela pode ser lida assim: "Quadrado é uma função que recebe um inteiro chamado x e produz um inteiro". Observe que o compilador define por hora o tipo do square como int – isso ocorre porque a multiplicação não é genérica em todos os tipos, mas sim em um conjunto fechado de tipos. O compilador do F# escolheu int neste caso, mas ajustará a assinatura de tipo se você chamar square com um tipo de entrada diferente, como um float.

Outra função, main, é definida, que é decorada com o atributo EntryPoint para informar ao compilador F# que a execução do programa deve começar ali. Ela segue a mesma convenção que outras linguagens de programação no estilo C, onde argumentos de linha de comando podem ser passados para esta função e um código inteiro é retornado (normalmente 0).

É nesta função que chamamos a função square com um argumento de 12. O compilador F# então atribui o tipo de square para ser int -> int (ou seja, uma função que recebe um int e produz um int). A chamada para printfn é uma função de impressão formatada que usa uma cadeia de caracteres de formato, semelhante às linguagens de programação estilo C, parâmetros que correspondem aos especificados na cadeia de caracteres de formato e, em seguida, imprime o resultado e uma nova linha.

Como executar código

Você pode executar o código e ver os resultados clicando em Executar no menu de nível superior e depois em Iniciar sem depuração. Isso executará o programa sem depuração e permitirá que você veja os resultados.

Agora você deve ver o seguinte impresso na janela do console que o Visual Studio para Mac apareceu:

12 squared is 144!

Parabéns! Você criou seu primeiro projeto em F# no Visual Studio para Mac, escreveu uma função em F#, imprimiu os resultados da chamada dessa função e executou o projeto para ver alguns resultados.

Usando F# interativo

Um dos melhores recursos das ferramentas do F# no Visual Studio para Mac é a janela interativa do F#. Ele permite que você envie código para um processo onde você pode chamar esse código e ver o resultado de forma interativa.

Para começar a usá-lo, destaque a função square definida em seu código. Em seguida, clique em Editar no menu de nível superior. Em seguida, selecione Enviar seleção para F# Interativo. Isso executa o código na janela interativa do F#. Como alternativa, você pode clicar com o botão direito do mouse na seleção e escolher Enviar seleção para F# interativo. Você deve ver a janela interativa de F# aparecer com o seguinte:

>

val square: x: int -> int

>

Isso mostra a mesma assinatura de função para a função square, que você viu anteriormente quando passou o mouse sobre a função. Como square agora está definido no processo do F# interativo, você pode chamá-lo com valores diferentes:

> square 12;;
val it: int = 144
> square 13;;
val it: int = 169

Isso executa a função, associa o resultado a um novo nome it e exibe o tipo e o valor de it. Observe que você deve terminar cada linha com ;;. É assim que o F# interativo sabe quando sua chamada de função é concluída. Você também pode definir novas funções no F# interativo:

> let isOdd x = x % 2 <> 0;;

val isOdd: x: int -> bool

> isOdd 12;;
val it: bool = false

O disposto acima define uma nova função, isOdd, que recebe um int e verifica se é ímpar! Você pode chamar essa função para ver o que ela retorna com diferentes entradas. Você pode chamar funções dentro de chamadas de função:

> isOdd (square 15);;
val it: bool = true

Você também pode usar o operador pipe-forward para o pipeline do valor nas duas funções:

> 15 |> square |> isOdd;;
val it: bool = true

O operador pipe-forward, entre outros, são abordados em tutoriais posteriores.

Isto é apenas uma amortra do que você pode fazer com o F# interativo. Para saber mais, confira Programação interativa com F#.

Próximas etapas

Se ainda não o fez, confira o Tour de F#, que abrange alguns dos principais recursos do F#. Ele fornecerá uma visão geral de alguns dos recursos do F# e fornecerá amplas amostras de código que você pode copiar no Visual Studio para Mac e executar. Há também alguns ótimos recursos externos que você pode usar, apresentados no Guia do F#.

Confira também