O documento fornece uma introdução ao F#, uma linguagem de programação funcional desenvolvida pela Microsoft. Resume as seguintes informações essenciais:
1) O F# foi desenvolvido pela Microsoft Research, é open source e funciona no Visual Studio e VS Code de forma cross-platform.
2) Apresenta as principais diferenças entre F# e C#, como a inferência de tipos, filosofia funcional-first e tipos algébricos.
3) Recomenda recursos como o site fsharp.org para aqueles interessados em aprender mais sobre a linguagem.
5. Sobre
• Desenvolvido pela Microsoft Research
– Incluído junto com Visual Studio in 2010
• Open source
– GitHub
6. Sobre
• Desenvolvido pela Microsoft Research
– Incluído junto com Visual Studio in 2010
• Open source
– GitHub
• Cross platform
– Funciona com VS Code (e outros)
7. Sobre
• Desenvolvido pela Microsoft Research
– Incluído junto com Visual Studio in 2010
• Open source
– GitHub
• Cross platform
– Funciona com VS Code (e outros)
• Comunidade ativa
– fsharp.org
– F# Slack channel
9. Sobre
• Roda em cima do CLR
• Interopera com outras linguagens .NET
10. Sobre
• Roda em cima do CLR
• Interopera com outras linguagens .NET
• É turing completa
11. Sobre
• Roda em cima do CLR
• Interopera com outras linguagens .NET
• É turing completa
• É possível usufruir de qualquer bibliotecas escritas em/para
C# tal como EntityFramework, ASP.NET, Xamarin, etc.
16. Índice
Diferenças entre C# e F#
– Sintaxe
– Inferência de tipos
– Diferentes defaults
– Diferente filosofia
17. Índice
Diferenças entre C# e F#
– Sintaxe
– Inferência de tipos
– Diferentes defaults
– Diferente filosofia
Exclusivo do F#
– Functional-first
– Algebraic type system
18. Índice
Diferenças entre C# e F#
– Sintaxe
– Inferência de tipos
– Diferentes defaults
– Diferente filosofia
Exclusivo do F#
– Functional-first
– Algebraic type system
19. Índice
Diferenças entre C# e F#
– Sintaxe
– Inferência de tipos
– Diferentes defaults
– Diferente filosofia
Exclusivo do F#
– Functional-first
– Algebraic type system
90. F# tem ‘defaults’ diferentes do C#
• Imutável por padrão
• Mutabilidade é caso especial
91. F# tem ‘defaults’ diferentes do C#
• Imutável por padrão
• Mutabilidade é caso especial
• Classes e tipos por padrão não nuláveis
• Permitir nulo é um caso especial
92. F# tem ‘defaults’ diferentes do C#
• Imutável por padrão
• Mutabilidade é caso especial
• Classes e tipos por padrão não nuláveis
• Permitir nulo é um caso especial
• Igualdade estrutural por padrão
• Igualdade por referencia é caso especial
93. F# tem ‘defaults’ diferentes do C#
• Imutável por padrão
• Mutabilidade é caso especial
• Classes e tipos por padrão não nuláveis
• Permitir nulo é um caso especial
• Igualdade estrutural por padrão
• Igualdade por referencia é caso especial
• Todos os valores devem ser sempre totalmente
inicializados
114. Objetivo:
• Você consegue entender o código usando apenas informações
que você tem bem na sua frente?
• Você não tem permissão para olhar outras partes da base de
código!
123. Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
124.
125.
126. Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
127.
128.
129.
130. Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
135. Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
136.
137.
138.
139.
140. Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar objetos de diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
• Uma vez criados, objetos e coleções devem ser imutáveis.
141.
142.
143.
144.
145. Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
• Uma vez criados, objetos e coleções devem ser imutáveis.
• Dados ou erros ausentes devem ser explicitados. Sem
permitir nulos
146. F# tenta ser uma linguagem previsível
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
• Uma vez criados, objetos e coleções (geralmente) são
imutáveis.
• Dados ou erros ausentes (geralmente) são explícitos. Sem
permitir nulos
147. F# tenta ser uma linguagem previsível
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
• Uma vez criados, objetos e coleções (geralmente) são
imutáveis.
• Dados ou erros ausentes (geralmente) são explícitos. Sem
permitir nulos
211. • Exemplo de alguns requisitos:
• Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
212. • Exemplo de alguns requisitos:
• Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
• Para dinheiro, não precisamos de nenhuma
informação extra
213. • Exemplo de alguns requisitos:
• Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
• Para dinheiro, não precisamos de nenhuma
informação extra
• Para cheques, precisamos do número do cheque
214. • Exemplo de alguns requisitos:
• Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
• Para dinheiro, não precisamos de nenhuma
informação extra
• Para cheques, precisamos do número do cheque
• Para cartões, precisamos do tipo de cartão e do
número do cartão