Evandro Souza
F# e o Paradigma funcional
● É linguagem multi-paradigma (OO, imperativa) -> functional-first
● Soluciona problemas complexos com códigos simples / elegantes
● Encoraja a imutabilidade do código
● É compativel com bibliotecas .NET
● É multiplataforma
Por que F#?
Conceitos fundamentais
● Functions != Classes, objects, methods.
● Functions são cidadãos de primeira classe.
Functions
bike->moto
Tunel da transformação
Functions -> inputs e outputs
let add x = (fun y -> x + y) Int->(int->int)
Output function
int->intint
let useFn f = f() + 1 Int->(int->int)
Input function
int->int int
Int->int
parameter functionint->int
int int
let tranfInt f x= (f x) + 1
Compositions
bike->carro
Function C
bike->moto moto->carro
Function A Function B
● Types != Classes
● São imutáveis
● Não possuem valor “null”
Types
let inteiro = 1 //val inteiro : int
type Cliente = {Codigo : int;
RazaoSocial : string}
let cliente = {Codigo = 1;
RazaoSocial = "Gambiarra Ltda"} //val cliente : Cliente
let func x = x+1
let func1 = func //val func1 : (int -> int)
Record type
Exceto usando operador mutable
Types Compositions
Conjunto de pessoas Conjunto de datas
João, 12 Janeiro
Maria, 15 Dezembro
José, 17 Junho
Product Type
type pessoa = {Nome:string; Sobrenome:string}
type data = {Dia:int; Mes:int; Ano:int}
type aniversario = pessoa * data
let pessoa1 = { Nome = "João"; Sobrenome="Silva"}
let dia11Janeiro = {Dia = 11; Mes=1; Ano=1989}
let aniversario = (pessoa1, dia11Janeiro)
Tuple type
Types Compositions
Dinheiro
Cartão de crédito
Cheque
type pagamento =
| Dinheiro of double
| Cheque of double
| CartaoCredito of string * string * double
let tipoCheque = CartaoCredito("EVANDRO F SOUZA",
"454545454",
100.00)
Sum Type
● Similar ao swith do C#
Match Expressions
let tipoCliente x=
match x with
| 1 -> "Cliente normal"
| 2 -> "Cliente vip"
| _ -> "Não definido"
public string TipoCliente(int x)
{
switch (x)
{
case 1: return "Cliente
normal";
case 2: return "Cliente vip";
default: return "Não definido";
}
}
Não é opcional
Operador Pipe forward
● Maneira elegante funcional de passar parâmetros para uma função
let square x = x * x
let toStr x = x.ToString()
let rev (x : string) = new string (Array.rev (x.ToCharArray()))
let result = rev (toStr (square 9))
9 81 “81” “18"
let result = 9 |> square |> toStr |> rev
Onde posso utilizar?
http://fsharp.org
https://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work/
Vamos codar
Somar a raiz quadrada de 1 até N.
Necessidade
3 1, 2, 3 1, 4, 9 14
public static class SumOfSquaresHelper
{
public static int Square(int i)
{
return i * i;
}
public static int SumOfSquares(int n)
{
var sum = 0;
for (var i = 1; i <= n; i++)
{
sum += Square(i);
}
return sum;
}
}
let square x = x * x
let sumOfSquares n =
[1..n] |> List.map square |> List.sum
sumOfSquares 3
✓ Menos código (16 linhas -> 4 linhas)
✓ Sem declaração de tipos
✓ Desenvolvimento interativo
public static class SumOfSquaresHelper
{
public static int SumOfSquares(int n)
{
return Enumerable.Range(1, n)
.Select(i => i * i)
.Sum();
}
}
let square x = x * x
let sumOfSquares n =
[1..n] |> List.map square |> List.sum
sumOfSquares 3
● http://fsharp.org/guides/web/
● https://fsharpforfunandprofit.com
● https://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work/
● http://www.tryfsharp.org/
Referências
Obrigado!
evandroferreira
sevandroferreira
s
evandroferreira
s

Mais conteúdo relacionado

PPTX
Web Scraping com F Sharp
PDF
Lista10 maicon menezes
PDF
Programação estruturada com Java-Aula04
ODP
Linguagem C 06 Funcoes
PPTX
Linguagem C - Vetores
ODP
Linguagem C 03 Estruturas De Decisao
PPT
Aop Aspect J 1.5.4 Capitulo 04
DOCX
apostila C++
Web Scraping com F Sharp
Lista10 maicon menezes
Programação estruturada com Java-Aula04
Linguagem C 06 Funcoes
Linguagem C - Vetores
Linguagem C 03 Estruturas De Decisao
Aop Aspect J 1.5.4 Capitulo 04
apostila C++

Mais procurados (20)

PPTX
Usando POP com Programação Funcional
PDF
14 algoritmos de classificacao de tabelas
PDF
Ponteiros de Função
PPTX
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
PPT
Paradigmas de Linguagens de Programacao - Aula #3
PDF
Linguagem C - Funções e ponteiros
PPTX
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
PPTX
Linguagem C - Vetores, Matrizes e Funções
PPTX
Debugging tips and tricks
PDF
Resumo tipo primitivo_java
PDF
Linguagem c wellington telles - aula 05
PPTX
Semana 3: Introdução à linguagem de programação Java
ODP
PPSX
Programação em C
PPTX
Introdução à linguagem c
PPTX
JAVA - Introdução
PPTX
Programação Orientada por Objectos - Aula 3
KEY
Processing: programação para artes visuais
Usando POP com Programação Funcional
14 algoritmos de classificacao de tabelas
Ponteiros de Função
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Paradigmas de Linguagens de Programacao - Aula #3
Linguagem C - Funções e ponteiros
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
Linguagem C - Vetores, Matrizes e Funções
Debugging tips and tricks
Resumo tipo primitivo_java
Linguagem c wellington telles - aula 05
Semana 3: Introdução à linguagem de programação Java
Programação em C
Introdução à linguagem c
JAVA - Introdução
Programação Orientada por Objectos - Aula 3
Processing: programação para artes visuais
Anúncio

Semelhante a F sharp e o paradigma funcional (20)

PPTX
F# para devs c#
PPTX
A importância da programação funcional no dia a-dia
PPTX
Introdução à programação funcional
PPTX
Transição - Orientação a objeto para Funcional
PDF
Functional programming feat. Swift (Portuguese)
PDF
MSP Tech Days 2018 - Programação Funcional com F#
PDF
javascript_funcional.pdf
PPTX
Programacao funcional
PDF
Introdução ao paradigma funcional com scala
PDF
Programação Funcional - Luiz Stangarlin
PDF
Programação funcional em Swift
PPTX
Programação funcional no dia a dia
PDF
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
PPTX
Técnicas de Programação Funcional
PDF
Evolução e futuro do uso de paradigmas no JavaScript
PPTX
Programação Funcional usando C# e F#
PPTX
Breve introdução a programação funcional com JavaScript
PPTX
Light Talk sobre JavaScript Funcional
PDF
Linguagem Go
PDF
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
F# para devs c#
A importância da programação funcional no dia a-dia
Introdução à programação funcional
Transição - Orientação a objeto para Funcional
Functional programming feat. Swift (Portuguese)
MSP Tech Days 2018 - Programação Funcional com F#
javascript_funcional.pdf
Programacao funcional
Introdução ao paradigma funcional com scala
Programação Funcional - Luiz Stangarlin
Programação funcional em Swift
Programação funcional no dia a dia
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
Técnicas de Programação Funcional
Evolução e futuro do uso de paradigmas no JavaScript
Programação Funcional usando C# e F#
Breve introdução a programação funcional com JavaScript
Light Talk sobre JavaScript Funcional
Linguagem Go
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Anúncio

Último (20)

PPTX
Apresentação do relatório de C-slides.pptx
PDF
Impactos ambientais gerados pela construção civil
PPTX
Caminho das Bromélias _Nível Obra - Governança em SSMA_03.2024.pptx
PDF
Pesquisa Operacional - Programação Linear
PPTX
Cultivo de Cebola e tratos culturais.pptx
PPT
22a Aula Manejo de Plantas Daninhas(1).ppt
PDF
Poluição sonora xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PDF
MATERIAIS DE CONSTRUÇÃO Solo cimento - 07.pdf
PPTX
APOSTILA DE AGENTE DE INSPEÇÃONBR 5426.pptx
PPT
aula biologia do solo na agronomia introdução
PPT
Aula Ciência e Tecnologia dos Materiais - Metais e ligas não ferrosas
PPT
aula sobre biologia celular - introdução.ppt
PDF
1 - Aula Pneumática Elementos da Pneumática.pdf
PPT
1 - Serviços em Eletricidade - 1° SOS RCP DEA - Rev a.ppt
PDF
Boas práticas em rebobinamento trifásico .pdf
PPT
Primeiros Socorros e Saúde Ocupacional Ferrosos Sul.ppt
PPTX
Portuguese_Portfolio_May_2024.pptx_redes
PPTX
1 Conceitos-de-Gestao-da-Qualidaade.pptx
PDF
Mapa de Oferta Eng Civil (20h 02min, 06-08-2025).pdf
PPT
Aula-Completação de poços de petroleo e gas
Apresentação do relatório de C-slides.pptx
Impactos ambientais gerados pela construção civil
Caminho das Bromélias _Nível Obra - Governança em SSMA_03.2024.pptx
Pesquisa Operacional - Programação Linear
Cultivo de Cebola e tratos culturais.pptx
22a Aula Manejo de Plantas Daninhas(1).ppt
Poluição sonora xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MATERIAIS DE CONSTRUÇÃO Solo cimento - 07.pdf
APOSTILA DE AGENTE DE INSPEÇÃONBR 5426.pptx
aula biologia do solo na agronomia introdução
Aula Ciência e Tecnologia dos Materiais - Metais e ligas não ferrosas
aula sobre biologia celular - introdução.ppt
1 - Aula Pneumática Elementos da Pneumática.pdf
1 - Serviços em Eletricidade - 1° SOS RCP DEA - Rev a.ppt
Boas práticas em rebobinamento trifásico .pdf
Primeiros Socorros e Saúde Ocupacional Ferrosos Sul.ppt
Portuguese_Portfolio_May_2024.pptx_redes
1 Conceitos-de-Gestao-da-Qualidaade.pptx
Mapa de Oferta Eng Civil (20h 02min, 06-08-2025).pdf
Aula-Completação de poços de petroleo e gas

F sharp e o paradigma funcional

  • 1. Evandro Souza F# e o Paradigma funcional
  • 2. ● É linguagem multi-paradigma (OO, imperativa) -> functional-first ● Soluciona problemas complexos com códigos simples / elegantes ● Encoraja a imutabilidade do código ● É compativel com bibliotecas .NET ● É multiplataforma Por que F#?
  • 4. ● Functions != Classes, objects, methods. ● Functions são cidadãos de primeira classe. Functions bike->moto Tunel da transformação
  • 5. Functions -> inputs e outputs let add x = (fun y -> x + y) Int->(int->int) Output function int->intint let useFn f = f() + 1 Int->(int->int) Input function int->int int Int->int parameter functionint->int int int let tranfInt f x= (f x) + 1
  • 7. ● Types != Classes ● São imutáveis ● Não possuem valor “null” Types let inteiro = 1 //val inteiro : int type Cliente = {Codigo : int; RazaoSocial : string} let cliente = {Codigo = 1; RazaoSocial = "Gambiarra Ltda"} //val cliente : Cliente let func x = x+1 let func1 = func //val func1 : (int -> int) Record type Exceto usando operador mutable
  • 8. Types Compositions Conjunto de pessoas Conjunto de datas João, 12 Janeiro Maria, 15 Dezembro José, 17 Junho Product Type type pessoa = {Nome:string; Sobrenome:string} type data = {Dia:int; Mes:int; Ano:int} type aniversario = pessoa * data let pessoa1 = { Nome = "João"; Sobrenome="Silva"} let dia11Janeiro = {Dia = 11; Mes=1; Ano=1989} let aniversario = (pessoa1, dia11Janeiro) Tuple type
  • 9. Types Compositions Dinheiro Cartão de crédito Cheque type pagamento = | Dinheiro of double | Cheque of double | CartaoCredito of string * string * double let tipoCheque = CartaoCredito("EVANDRO F SOUZA", "454545454", 100.00) Sum Type
  • 10. ● Similar ao swith do C# Match Expressions let tipoCliente x= match x with | 1 -> "Cliente normal" | 2 -> "Cliente vip" | _ -> "Não definido" public string TipoCliente(int x) { switch (x) { case 1: return "Cliente normal"; case 2: return "Cliente vip"; default: return "Não definido"; } } Não é opcional
  • 11. Operador Pipe forward ● Maneira elegante funcional de passar parâmetros para uma função let square x = x * x let toStr x = x.ToString() let rev (x : string) = new string (Array.rev (x.ToCharArray())) let result = rev (toStr (square 9)) 9 81 “81” “18" let result = 9 |> square |> toStr |> rev
  • 14. Somar a raiz quadrada de 1 até N. Necessidade 3 1, 2, 3 1, 4, 9 14
  • 15. public static class SumOfSquaresHelper { public static int Square(int i) { return i * i; } public static int SumOfSquares(int n) { var sum = 0; for (var i = 1; i <= n; i++) { sum += Square(i); } return sum; } } let square x = x * x let sumOfSquares n = [1..n] |> List.map square |> List.sum sumOfSquares 3 ✓ Menos código (16 linhas -> 4 linhas) ✓ Sem declaração de tipos ✓ Desenvolvimento interativo
  • 16. public static class SumOfSquaresHelper { public static int SumOfSquares(int n) { return Enumerable.Range(1, n) .Select(i => i * i) .Sum(); } } let square x = x * x let sumOfSquares n = [1..n] |> List.map square |> List.sum sumOfSquares 3
  • 17. ● http://fsharp.org/guides/web/ ● https://fsharpforfunandprofit.com ● https://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work/ ● http://www.tryfsharp.org/ Referências