Funcional C #
()
Sobre este e-book
Leia mais títulos de Jideon Francisco Marques
Programação Python Ilustrada Para Iniciantes E Intermediários: Abordagem “aprenda Fazendo” – Passo A Passo Nota: 0 de 5 estrelas0 notasHiit De 15 Minutos Para Mulheres Nota: 4 de 5 estrelas4/5Hoodoo Para Iniciantes Nota: 5 de 5 estrelas5/5Sambo Nota: 0 de 5 estrelas0 notasComo Fazer Animais Amigurumi Nota: 0 de 5 estrelas0 notasAlquimia Da Beleza Natural Nota: 0 de 5 estrelas0 notasTui Na Manual De Massagem Chinesa Nota: 0 de 5 estrelas0 notasExcel 2022 O Tutorial Completo Para Iniciantes E Especialistas Nota: 0 de 5 estrelas0 notasLivro De Receitas De Conservas E Conservas Em Banho De Água Para Iniciantes Nota: 0 de 5 estrelas0 notasMudras Para A Vida Moderna Nota: 5 de 5 estrelas5/5Macramé Para Iniciantes Nota: 0 de 5 estrelas0 notasJava O Guia Completo Nota: 0 de 5 estrelas0 notasFerramentas De Eft Nota: 0 de 5 estrelas0 notasUm Livro Completo De Cura Reiki Nota: 0 de 5 estrelas0 notasReceitas Fáceis De Ayurveda Nota: 0 de 5 estrelas0 notasKarma Do Signo Solar Nota: 0 de 5 estrelas0 notasPlano De Dieta Diabética De 28 Dias Para Perda De Peso Nota: 0 de 5 estrelas0 notasExercício De Lifting Facial Nota: 0 de 5 estrelas0 notas100 Receitas De Bolos E Assados Nota: 0 de 5 estrelas0 notasLivro De Receitas Do Desidratador Nota: 0 de 5 estrelas0 notasBruxaria Cotidiana Nota: 5 de 5 estrelas5/5Desenvolvedor De Back-end Em 30 Dias Nota: 0 de 5 estrelas0 notasCura Bioenergética Nota: 0 de 5 estrelas0 notasA Cura Alcalina Nota: 0 de 5 estrelas0 notasDesenho Fácil Nota: 5 de 5 estrelas5/5Bolos E Biscoitos Artesanais Receitas Selecionadas Nota: 1 de 5 estrelas1/5Magia Do Amor Nota: 0 de 5 estrelas0 notasCódigo Limpo Em Php Nota: 0 de 5 estrelas0 notasDeliciosa Pâtisserie Nota: 0 de 5 estrelas0 notas
Relacionado a Funcional C #
Ebooks relacionados
O Curso De Codificação C++ Nota: 0 de 5 estrelas0 notasProgramação Funcional Com C# Nota: 0 de 5 estrelas0 notasDesbravando SOLID: Práticas avançadas para códigos de qualidade em Java moderno Nota: 0 de 5 estrelas0 notasJavascript Nota: 0 de 5 estrelas0 notasProgramação Didática com Linguagem C Nota: 4 de 5 estrelas4/5Programação em C# para iniciantes Nota: 0 de 5 estrelas0 notasCurso Intensivo De Python Nota: 0 de 5 estrelas0 notasJPA Eficaz: As melhores práticas de persistência de dados em Java Nota: 0 de 5 estrelas0 notasFundamentos De Programação C++ Nota: 0 de 5 estrelas0 notasCódigo Limpo Em Php Nota: 0 de 5 estrelas0 notasComo Ser Um Desenvolvedor Web Nota: 0 de 5 estrelas0 notasLógica De Programação Javascript Nota: 0 de 5 estrelas0 notasRefatorando com padrões de projeto: Um guia em Java Nota: 0 de 5 estrelas0 notasSistemas Orientados a Objetos: Conceitos e Práticas Nota: 0 de 5 estrelas0 notasDesenvolvimento Front-end Sem Estrutura Nota: 0 de 5 estrelas0 notasOrientação a Objetos em C#: Conceitos e implementações em .NET Nota: 5 de 5 estrelas5/5Java Para Todos Nota: 0 de 5 estrelas0 notasIntrodução A Programação Em Ruby Nota: 0 de 5 estrelas0 notasLivro 24 Gestão Estudos Da Faculdade E Insihts Aleatorios Nota: 0 de 5 estrelas0 notasDesenvolvedor De Back-end Em 30 Dias Nota: 0 de 5 estrelas0 notasProgramação Em Basic Para Pc Nota: 0 de 5 estrelas0 notasFundamentos De Programação Java Nota: 0 de 5 estrelas0 notasC Progressivo Nota: 0 de 5 estrelas0 notasProgramação Em C Para A Raspberry Pi Parte Iv Nota: 0 de 5 estrelas0 notasLinguagem Unificada De Modelagem Nota: 0 de 5 estrelas0 notasPascal Aplicado A Eletrônica Nota: 0 de 5 estrelas0 notasProgramação Em Python Nota: 0 de 5 estrelas0 notasProgramação Javascript Para Smartphone/tablet Nota: 0 de 5 estrelas0 notasRetomando O Rumo Nota: 0 de 5 estrelas0 notasProgramação Basic Para Smartphone/tablet Nota: 0 de 5 estrelas0 notas
Inteligência Artificial (IA) e Semântica para você
Inteligência Artificial: A Quarta Revolução Industrial Nota: 0 de 5 estrelas0 notasPower Bi Black Belt Nota: 0 de 5 estrelas0 notasChatGPT para o dia a dia: Explore o poder da Inteligência Artificial agora mesmo Nota: 0 de 5 estrelas0 notasO que é inteligência artificial Nota: 5 de 5 estrelas5/5Descomplicando Passo A Passo Deep Web Nota: 5 de 5 estrelas5/5Inteligência Artificial como serviço: Uma introdução aos Serviços Cognitivos da Microsoft Azure Nota: 3 de 5 estrelas3/5A tecnologia que muda o mundo Nota: 4 de 5 estrelas4/5Excel 2022 O Tutorial Completo Para Iniciantes E Especialistas Nota: 0 de 5 estrelas0 notasDominando Html E Css Nota: 0 de 5 estrelas0 notasInteligência artificial & redes sociais Nota: 0 de 5 estrelas0 notasPacote Microsoft Office Capacitação Nota: 0 de 5 estrelas0 notasJava O Guia Completo Nota: 0 de 5 estrelas0 notasChatgpt O Roteiro Do Milionário Nota: 0 de 5 estrelas0 notasA Inteligência Artificial e o Futuro da Educação Nota: 0 de 5 estrelas0 notasPolítica De Segurança Da Informação Nota: 0 de 5 estrelas0 notasFunções Financeiras Com Microsoft Excel Nota: 0 de 5 estrelas0 notasDominando Trafego Nas Redes Sociais Nota: 4 de 5 estrelas4/5História e evolução da inteligência artificial Nota: 5 de 5 estrelas5/5Sobrevivendo à IA Nota: 0 de 5 estrelas0 notasMega-sena: A Ciência De Dados Por Trás Dos Números Nota: 0 de 5 estrelas0 notasComo Criar Um Ebook Eficiente Nota: 0 de 5 estrelas0 notasNavegando na Inteligência Artificial com Fé Nota: 0 de 5 estrelas0 notasChatgpt Ai - Contextos, Comandos, Dicas. Nota: 0 de 5 estrelas0 notasO Guia Definitivo para Geração de Renda com o ChatGPT para Empreendedores Nota: 0 de 5 estrelas0 notasConceitos Gerais De Business Intelligence Nota: 0 de 5 estrelas0 notas12 Técnicas Para Dominar As Planilhas Financeiras Nota: 0 de 5 estrelas0 notasTeoria dos Grafos: Uma abordagem prática em Java Nota: 0 de 5 estrelas0 notasMarketing Do Instagram (guia Para Iniciantes 2023) Nota: 0 de 5 estrelas0 notas
Avaliações de Funcional C #
0 avaliação0 avaliação
Pré-visualização do livro
Funcional C # - Jideon Francisco Marques
Funcional C #
Descubra os segredos da programação funcional usando C# e mude para sempre a maneira como você aborda seus aplicativos
Por Jideon F. Marques
© Copyright 2022 Jideon Marques - Todos os direitos reservados.
O conteúdo deste ebook não pode ser reproduzido, duplicado ou transmitido sem permissão direta por escrito do autor ou do editor.
Sob nenhuma circunstância qualquer culpa ou responsabilidade legal será imputada ao editor, ou autor, por quaisquer danos, reparações ou perdas monetárias devido às informações contidas neste ebook, direta ou indiretamente.
Notícia legal:
Este ebook é protegido por direitos autorais. É apenas para uso pessoal. Você não pode alterar, distribuir, vender, usar, citar ou parafrasear qualquer parte ou o conteúdo deste ebook sem o consentimento do autor ou editor.
Aviso de isenção de responsabilidade:
Observe que as informações contidas neste documento são apenas para fins educacionais e de entretenimento. Todo esforço foi feito para apresentar informações precisas, atualizadas, confiáveis e completas. Nenhuma garantia de qualquer tipo é declarada ou implícita. Os leitores reconhecem que o autor não está envolvido na prestação de aconselhamento jurídico, financeiro, médico ou profissional. O conteúdo deste ebook foi derivado de várias fontes. Consulte um profissional médico licenciado antes de tentar este programa ou qualquer técnica descrita neste ebook.
Ao ler este documento, o leitor concorda que em nenhuma circunstância o autor é responsável por quaisquer lesões, morte, perdas, diretas ou indiretas, que sejam incorridas como resultado do uso das informações contidas neste documento, incluindo, mas não limitado a a, erros, omissões ou imprecisões.
Índice
Funcional C #
Prefácio
1. Experimentando o Estilo Funcional em C#
Introdução à programação funcional
Noções básicas sobre definições, scripts e sessões
Usando substituição e simplificação para calcular a expressão
Entendendo as funções usadas para programação funcional
Formando a definição
Escovando
Comparação entre programação funcional e imperativa
Preparando o compilador C#
Conceitos de programação funcional
Funções de primeira classe e de ordem superior
tipos de função
valores de função
funções puras
funções recursivas
Sentindo-se funcional em C#
Usando o conceito matemático para entender a abordagem funcional
Aplicando tupla para C# funcional
Curry em C#
Pipelining
encadeamento de métodos
Transformando código imperativo em código funcional
A abordagem do código imperativo
A abordagem do código funcional
O método GenerateOrderedList()
O método Main()
As vantagens e desvantagens da programação funcional
Resumo
2. Delegados passo a passo
Apresentando delegados
Delegados simples
Delegados Multicast
Usando os métodos Delegate.Combine() e Delegate.Remove()
Usando os operadores += e -=
Delegados integrados
delegados genéricos
Os delegados da Action e do Func
Variação distintiva em delegados
Covariância
Contravariância
Resumo
3. Expressando métodos anônimos com expressões lambda
Conhecendo métodos anônimos
Criando métodos anônimos
Usando um método anônimo como argumento
Escrevendo métodos anônimos - algumas diretrizes
Vantagens dos métodos anônimos
expressões lambda
Transformando um método anônimo em uma expressão lambda
Criando um tipo delegado usando expressões lambda
Árvores de expressão e expressões lambda
Assinando eventos usando expressões lambda
Usando a palavra-chave do evento
Usando EventHandler ou EventHandler
As vantagens de usar a expressão lambda na programação funcional
Funções de primeira classe
Fecho
Resumo
4. Estendendo a funcionalidade do objeto com métodos de extensão
Aproximando-se dos métodos de extensão
Criando um método de extensão
Métodos de extensão no código IntelliSense
Chamando métodos de extensão nos outros assemblies
Fazendo referência a um namespace
Pegando carona em um namespace
Aproveitando a interface, a coleção e o objeto
Estendendo a interface
Estendendo a coleção
Estendendo um objeto
Vantagens de usar métodos de extensão na programação funcional
Limitações do método de extensão
Estendendo uma classe estática
Modificando a implementação do método na classe ou tipo existente
Resumo
5. Consultando qualquer coleção facilmente com LINQ
Introdução ao LINQ
Adiando a execução do LINQ
Escolhendo entre sintaxe fluente e sintaxe de expressão de consulta
Compreendendo a sintaxe fluente do LINQ
Compreendendo a sintaxe da expressão de consulta LINQ
Enumerando operadores de consulta padrão
Filtragem
Projeção
Juntando-se
Encomenda
Agrupamento
A operação definida
Métodos de conversão
Operação do elemento
Resumo
6. Aprimorando a capacidade de resposta do programa funcional com programação assíncrona
Construindo um aplicativo responsivo
Executando um programa de forma síncrona
Aplicando threads no programa
Criando threads usando pool de threads
O padrão de modelo de programação assíncrona
Usando o método Read() síncrono
Usando os métodos BeginRead() e EndRead()
Adicionando LINQ à invocação do método BeginRead()
O padrão assíncrono baseado em tarefa
Apresentando as classes Task e Task
Aplicando um modelo TAP simples
Usando o método de extensão WhenAll()
Envolvendo um APM em um modelo TAP
Programação assíncrona com as palavras-chave async e await
Funções assíncronas na programação funcional
Resumo
7. Recursão de Aprendizagem
Explorando a recursão
Funcionamento da rotina recursiva
Refatorando uma iteração para a recursão
Usando recursão de cauda
Estilo de passe acumulador
Estilo de passagem de continuação
Recursão indireta sobre recursão direta
Recursão em uma abordagem funcional usando LINQ Aggregate
Explorando o método Aggregate
Resumo
8. Otimizando o código usando técnicas de preguiça e cache
Introdução à preguiça
Enumeração preguiçosa
Avaliação preguiçosa
Avaliação não estrita
Inicialização preguiçosa
As vantagens e desvantagens de ser preguiçoso
Cacheando recursos caros
Executando o cálculo inicial
Memorização
Resumo
9. Trabalhando com padrão
Dissecando correspondência de padrões em programação funcional
Transformando dados usando correspondência de padrões
Alternando para correspondência de padrão
Simplificando a correspondência de padrões
Dando as boas-vindas ao recurso de correspondência de padrões no C# 7
Apresentando o Monad como um padrão de design
Criando o tipo Monádico M
Implementando o tipo de dados genérico para Monad
Implementando Monad para Lazy
Regras do padrão Mônada
Resumo
10. Executando uma ação na programação funcional C#
Desenvolvendo programação funcional em Windows Forms
Criando o código por trás de um formulário
Criando o código do mecanismo em uma abordagem imperativa
Preparando as propriedades da classe
Construindo o construtor
Limpando as propriedades
Anexando o número à caixa de exibição
Preparando a operação matemática
Formatando a entrada
Resolvendo o cálculo
Calculando a operação adicional
Criando o código do motor na abordagem funcional
Adicionando várias novas propriedades
Simplificando a correspondência de padrões
Atribuindo as propriedades
Construindo a classe limpando as propriedades
Anexar o número inserido à caixa de texto
Preparando a operação
Formatando a entrada
Resolvendo o cálculo
Calculando a operação adicional
Resumo
11. Melhores Práticas de Codificação e Teste do Código Funcional
Práticas recomendadas de codificação em C# funcional
Prevenção de assinaturas desonestas
Refatorando uma classe mutável em uma classe imutável
Evitando mutabilidade e acoplamento temporal
Lidando com os efeitos colaterais
Separando o código da lógica de domínio e do shell mutável
Examinando o código contendo efeitos colaterais
Refatorando o método AddRecord()
Refatorando o método RemoveRecord()
Executando a lógica de domínio no teste de unidade
Testando o método AddRecord()
Testando o método RemoveRecord()
Executando o teste
Adicionando o shell mutável ao código
Resumo
Prefácio
Alguns de nós podem estar acostumados a desenvolver um aplicativo usando a técnica de programação por orientação a objetos e não se importam com a técnica de programação funcional. No entanto, há benefícios em usar a programação funcional. Um dos benefícios é que teremos uma nova perspectiva sobre nosso código de programação, já que a função na programação funcional é idêntica a uma função matemática. Por ser idêntica a uma função matemática, a função na programação funcional não contém efeitos colaterais, o que significa que a invocação da função não terá efeito em outras funções da classe. Discutiremos mais detalhes sobre os benefícios e outras coisas relacionadas à programação funcional neste livro.
O que este livro cobre
Capítulo 1, Tasting Functional Style in C# , apresenta a abordagem de programação funcional discutindo seus conceitos e a comparação entre programação funcional e imperativa. Também tentamos refatorar um código imperativo simples em uma abordagem funcional.
Capítulo 2, Walkthrough Delegates , aborda a definição, a sintaxe e o uso de delegados. Também discutimos a variação de delegados e o delegado integrado.
Capítulo 3, Expressing Anonymous Methods with Lambda Expressions , orienta-nos pelo conceito de delegados e usa-o para criar e usar um método anônimo. Depois de analisarmos o método anônimo, podemos transformá-lo em uma expressão lambda e aplicá-lo à programação funcional.
Capítulo 4, Extending Object Functionality with Extension Methods , elabora os benefícios de usar o método de extensão na programação funcional. Antes disso, discutimos o uso do método de extensão e também discutimos como obter esse novo método no IntelliSense. Além disso, tentamos invocar o método de extensão de outros assemblies.
capítulo 5, Consultando qualquer coleção facilmente com LINQ , enumera o operador LINQ fornecido por C# e compara as duas sintaxes LINQ: Fluent Syntax e Query Expression Syntax. Também discutimos a execução adiada no processo LINQ.
Capítulo 6, Aprimorando a capacidade de resposta do programa funcional com programação assíncrona , aborda a programação assíncrona para a abordagem funcional. Ele explicará o modelo de programação assíncrona e o padrão assíncrono baseado em tarefa.
Capítulo 7, Learning Recursion , explica as vantagens da recursão sobre a sequência de loop. Também discutimos a recursão direta e indireta neste capítulo.
Capítulo 8, Optimizing the Code Using Laziness and Caching Techniques , aborda a técnica usada para otimizar o código na abordagem funcional. Falamos sobre o pensamento preguiçoso e a técnica de cache para otimizar nosso código.
Capítulo 9, Trabalhando com Padrão , abrange as vantagens de usar padrões em comparação com as operações convencionais de caixa de comutação. Discutimos a correspondência de padrões e a mônada neste capítulo. Usamos o recurso de correspondência de padrões, que é o novo recurso fornecido pelo C# 7.
Capítulo 10, Tomando uma ação na programação funcional C#, orienta-nos através do desenvolvimento de código funcional com base em determinado código imperativo. Usamos nosso aprendizado no capítulo anterior para criar um aplicativo usando a abordagem funcional.
Capítulo 11, Coding Best Practice and Testing the Functional Code , explica a melhor prática na abordagem funcional, incluindo a criação de uma assinatura honesta e como lidar com os efeitos colaterais. Também separamos o código em lógica de domínio e shell mutável e, em seguida, testamos usando testes de unidade.
O que você precisa para este livro
Para percorrer este livro e compilar com êxito todo o código-fonte, precisamos de um computador pessoal que execute o Microsoft Windows 10 (ou superior) com o Visual Studio Community 2015 Update 3 instalado para a execução do código nos capítulos 1-8, 10, 11 e Visual Studio Community 2017 RC (Release Candidate) instalado para a execução do código no capítulo 9. Também precisamos do .NET Framework 4.6.2, a menos que você precise recodificar todo o código-fonte para executar em sua versão atual do .NET Framework. Você também precisa do .NET Core 1.0 se quiser compilar todo o código em outra plataforma, pois todos os códigos são compatíveis com o .NET Core 1.0.
Para quem é este livro
Este livro é adequado para desenvolvedores C# com conhecimento prévio básico de C# e sem experiência em programação funcional.
Convenções
Neste livro, você encontrará vários estilos de texto que distinguem diferentes tipos de informação. Aqui estão alguns exemplos desses estilos e uma explicação de seu significado.
Palavras de código em texto, nomes de tabelas de banco de dados, nomes de pastas, nomes de arquivos, extensões de arquivos, nomes de caminho, URLs fictícios, entrada do usuário e identificadores do Twitter são mostrados a seguir: Podemos incluir outros contextos por meio do uso da diretiva include
.
Um bloco de código é definido da seguinte forma:
namespace ActionFuncDelegados
{
programa de classe parcial pública
{
static void Main(string[] args)
{
//ActionDelegateInvoke();
FuncDelegateInvoke();
}
}
Quando queremos chamar sua atenção para uma parte específica de um bloco de código, as linhas ou itens relevantes são colocados em negrito:
Console.WriteLine(Números primos de 0 a 49 são:
);
foreach (int i em ExtractData)
Console.Write({0} \t
, i)
;
Console.WriteLine();
Qualquer entrada ou saída de linha de comando é escrita da seguinte forma:
C:\>dir | mais
Novos termos e palavras importantes são mostrados em negrito. Palavras que você vê na tela, por exemplo, em menus ou caixas de diálogo, aparecem no texto assim: Temos uma propriedade Body contendo {(a * b)} , NodeType contendo Lambda , Type contendo o delegado Func com três modelos.
Capítulo 1. Experimentando o estilo funcional em C#
A programação funcional é um estilo de construção dos elementos e da estrutura do programa de computador que trata os cálculos como avaliações em funções matemáticas. Embora existam algumas linguagens especificamente projetadas para criar programação funcional, como Haskell ou Scala, também podemos usar C# para realizar o design de programação funcional.
No primeiro capítulo deste livro, vamos explorar a programação funcional testando-a. Usaremos o poder do C# para construir algum código funcional. Também trataremos dos recursos em C# que são mais usados no desenvolvimento de programas funcionais. Ao final deste capítulo, teremos uma ideia de como será a abordagem funcional em C#. Aqui estão os tópicos que abordaremos neste capítulo:
Introdução à programação funcional
Na programação funcional, escrevemos funções sem efeitos colaterais da mesma forma que escrevemos em Matemática. A variável na função de código representa o valor do parâmetro da função e é semelhante à função matemática. A ideia é que um programador defina as funções que contém a expressão, a definição e os parâmetros que podem ser expressos por uma variável para resolver problemas.
Depois que um programador cria a função e a envia ao computador, é a vez do computador fazer seu trabalho. Em geral, o papel do computador é avaliar a expressão na função e retornar o resultado. Podemos imaginar que o computador atue como uma calculadora, pois analisará a expressão da função e dará o resultado ao usuário em formato impresso. A calculadora irá avaliar uma função composta por variáveis passadas como parâmetros e expressões que formam o corpo da função. As variáveis são substituídas por seus valores na expressão. Podemos fornecer expressões simples e expressões compostas usando operadores algébricos. Como as expressões sem atribuições nunca alteram o valor, as subexpressões precisam ser avaliadas apenas uma vez.
Suponha que temos a expressão 3 + 5 dentro de uma função. O computador definitivamente retornará 8 como resultado logo após avaliá-lo completamente. No entanto, este é apenas um exemplo simples de como o computador age ao avaliar uma expressão. Na verdade, um programador pode aumentar a capacidade do computador criando uma definição e expressão complexas dentro da função. O computador não apenas pode avaliar a expressão simples, mas também pode avaliar o cálculo e a expressão complexos.
Noções básicas sobre definições, scripts e sessões
Como discutimos anteriormente sobre uma calculadora que analisará a expressão da função, vamos imaginar que temos uma calculadora que possui um painel de console como um computador. A diferença entre esta e uma calculadora convencional é que temos que pressionar Enter em vez de = (igual a) para executar o processo de avaliação da expressão. Aqui, podemos digitar a expressão e pressionar Enter . Agora, imagine que digitamos a seguinte expressão:
3 x 9
Imediatamente após pressionar Enter , o computador imprimirá 27 no console, e é isso que esperamos. O computador fez um ótimo trabalho avaliando a expressão que demos. Agora, passemos à análise das seguintes definições. Imagine que os digitamos em nossa calculadora funcional:
quadrado a = a * a
max ab = a, se a >= b
= b, se b > a
Definimos as duas definições, square e max . Podemos chamar a lista de script de definições. Ao chamar a função square seguida de qualquer número que represente a variável a , teremos o quadrado desse número. Além disso, na definição de max, servimos dois números para representar as variáveis a e b , e então o computador irá avaliar esta expressão para descobrir o maior número entre as variáveis.
Ao definir essas duas definições, podemos usá-las como uma função, que podemos chamar de sessão, da seguinte forma:
quadrado (1 + 2)
O computador definitivamente imprimirá 9 após avaliar a função anterior. O computador também será capaz de avaliar a seguinte função:
máximo 1 2
Ele retornará 2 como resultado com base na definição que definimos anteriormente. Isso também é possível se fornecermos a seguinte expressão:
quadrado (máx. 2 5)
Em seguida, 25 será exibido em nosso painel de console da calculadora.
Também podemos modificar uma definição usando a definição anterior. Suponha que queremos quadruplicar um número inteiro e aproveitar a definição da função quadrada; aqui está o que podemos enviar para nossa calculadora:
quad q = quadrado q * quadrado q
quadra 10
A primeira linha da expressão anterior é uma definição da função quad. Na segunda linha, chamamos essa função e receberemos 10000 como resultado.
O script pode definir o valor da variável; por exemplo, dê uma olhada no seguinte:
raio = 20
Portanto, devemos esperar que o computador seja capaz de avaliar a seguinte definição:
área = (22/7) * quadrado (raio)
Usando substituição e simplificação para calcular a expressão
Usando um método matemático chamado redução , podemos avaliar expressões por variáveis de substituição ou expressões para simplificar as expressões até que não seja possível mais substituição na redução. Vamos pegar nossa expressão anterior, square (1 + 2) , e observar o seguinte processo de redução:
quadrado (1 + 2) -> quadrado 3 (adição)
-> 3 x 3 (quadrado)
-> 9 (multiplicar)
Primeiramente, temos o símbolo -> para indicar a redução. A partir da sequência, podemos descobrir o processo de redução, ou seja, o processo de avaliação. Na primeira linha, o computador executará a expressão 1 + 2 e a substituirá por 3 para reduzir a expressão. Em seguida, reduzirá a expressão na segunda linha simplificando o quadrado 3 para expressões de 3 x 3. Por fim, simplificará 3 x 3 e o substituirá por 9 , que é o resultado dessa expressão.
Na verdade, uma expressão pode ter mais de uma possibilidade na redução. O processo de redução anterior é uma das possibilidades de um processo de redução. Também podemos criar outras possibilidades, como as seguintes:
quadrado (1 + 2) -> (1 + 2) x (1 + 2) (quadrado)
-> 3 x (1 + 2) (adição)
-> 3 x 3 (soma)
-> 9 (multiplicar)
Na sequência anterior, em primeiro lugar, podemos ver que a regra para um quadrado é aplicada. O computador então substitui 1 + 2 na linha 2 e na linha 3. Por fim, ele multiplica o número na expressão.
A partir dos dois exemplos anteriores, podemos concluir que a expressão pode ser calculada usando substituição e simplificação simples, a regra básica da matemática. Também podemos ver que a expressão é uma representação do valor, não o valor em si. No entanto, a expressão estará na forma normal se não puder mais ser reduzida.
Entendendo as funções usadas para programação funcional
A programação funcional usa uma técnica de enfatizar funções e sua aplicação em vez de comandos e sua execução. A maioria dos valores na programação funcional são valores de função. Vamos dar uma olhada na seguinte notação matemática:
f :: A -> B
Pela notação anterior, podemos dizer que a função f é uma relação de cada elemento ali declarado, que é A e B . Chamamos A , o tipo de origem e B , o tipo de destino. Em outras palavras, a notação de A -> B afirma que A é um argumento onde temos que inserir o valor e B é um valor de retorno ou a saída da avaliação da função.
Considere que x denota um elemento de A e x + 2 denota um elemento de B , então podemos criar a notação matemática da seguinte forma:
f(x) = x + 2