A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.

Apresentações semelhantes


Apresentação em tema: "00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB."— Transcrição da apresentação:

1 00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB

2 -calculus 00(c) 2007 Gustavo Motta 2 Sumário Histórico Variáveis e funções na matemática e nas linguagens de programação Domínios, tipos e funções de alta ordem Funções polimórficas e Currying

3 -calculus 00(c) 2007 Gustavo Motta 3 Histórico Alonzo Church -1930s Teoria unificada de funções abrangendo todos os tipos de funções da matemática Definição, aplicação e recursão Resposta negativa ao Entscheidungsproblem -1936 Entscheidungsproblem Definiu o que é uma função computávelfunção computável Influência na ciência computação Linguagens funcionais Alonzo Church (1903–1995)

4 -calculus 00(c) 2007 Gustavo Motta 4 Introdução – Variáveis e funções na matemática e nas linguagens de programação Variável na matemática Toda ocorrência refere-se a um mesmo valor Variável nas linguagens de programação Qual é o seu sentido?

5 -calculus 00(c) 2007 Gustavo Motta 5 Introdução – Variáveis e funções na matemática e nas linguagens de programação Modos de uso de variáveis em textos matemáticos livre Ocorrência livre de variáveis x representa um valor fixo implicitamente definido por uma equação ou outra relação Ocorrência amarrada (bounded) de variáveis

6 -calculus 00(c) 2007 Gustavo Motta 6 Introdução – Variáveis e funções na matemática e nas linguagens de programação O problema Distinguir variáveis livres e amarradas A variável x é livre ou amarrada? Sendo a expressão uma função, então x é considerada amarrada, mesmo que implicitamente A notação lambda força a diferenciação entre variáveis livres e amarradas com o uso do símbolo

7 -calculus 00(c) 2007 Gustavo Motta 7 Introdução – Variáveis e funções na matemática e nas linguagens de programação Funções na matemática Funções Enfoque intensional (conotativo) Procedimento computacional para computar o valor da função para um dado argumento Caráter dinâmico, conceito original Similar nas linguagens de programação Função unicamente definida por um procedimento Pressupõe uma descrição finita de uma função em termos de um procedimento para computação

8 -calculus 00(c) 2007 Gustavo Motta 8 Introdução – Variáveis e funções na matemática e nas linguagens de programação Funções na matemática Enfoque extensional (denotativo) Postula a existência de um valor da função para um dado argumento sem especificar como computá-los Caráter estático, baseado na teoria de conjuntos Funções como conjuntos de pares ordenados Diferentes funções conotativas (procedimentos) podem computar a mesma função denotativa Não é decidível, em geral, se duas funções definidas procedimentalmente são extensionally equal Definição 1.1 Duas funções são extensionally equal se e somente se elas têm o mesmo valor para todo argumento.

9 -calculus 00(c) 2007 Gustavo Motta 9 Introdução – Domínios, tipos e funções de alta ordem Sejam D (domínio) e R (co-domínio) dois conjuntos Uma função é definida por um conjunto de pares ordenados onde o segundo componente é unicamente determinado pelo primeiro Caso a função tenha exatamente um par (x, y) para cada x D, então ela é chamada função total, caso contrário é chamada função parcial

10 -calculus 00(c) 2007 Gustavo Motta 10 Introdução – Domínios, tipos e funções de alta ordem Uma função com domínio D e co-domínio R também é chamada de mapeamento de D para R e seu conjunto pares é denominado de grafo Existem muitas funções diferentes de D para R cada uma tendo o tipo [D R], D, R Para D e R finitos, o número de funções totais possíveis para o tipo [D R] é O conjunto de todas as funções com tipo [D R] é chamado espaço de função

11 -calculus 00(c) 2007 Gustavo Motta 11 Introdução – Domínios, tipos e funções de alta ordem Se R tem pelo menos dois elementosdois elementos O conjunto de todas as funções com tipo [ ] é não enumerável O conjunto de funções computáveis é enumerável Tem um procedimento computacional, i. e., uma máquina de Turing associada Máquinas de Turing podem ser enumeradas Expressão formada por strings finitos num alfabeto finito A grande maioria das funções com tipo [ ] é não computável

12 -calculus 00(c) 2007 Gustavo Motta 12 Introdução – Domínios, tipos e funções de alta ordem Existe uma propriedade definível extensionally que permita distinguir o grafo das funções computáveis do grafo das funções não computáveis? Os grafos das funções computáveis devem sercontínuos num sentido abstrato Base para construção de um modelo matemático para o -calculus sem tipos O propósito original do -calculus foi prover um framework para o estudo das propriedades formais de funções arbitrárias Objetivo ambicioso, não alcançado Usada para estudo das funções computáveis

13 -calculus 00(c) 2007 Gustavo Motta 13 Introdução – Domínios, tipos e funções de alta ordem Não se pode ter uma expressão para cada função com tipo [ ] O conjunto de contínuas coincide com o conjunto de funções que podem ser precisamente descritas por expressões, i. e., funções computáveis -calculus com tipos consideram o domínio e o co-domínio das funções relevantes no tratamento formal Toda variável tem um tipo associado Tipos são conjuntos de valores com operações associadas

14 -calculus 00(c) 2007 Gustavo Motta 14 Introdução – Domínios, tipos e funções de alta ordem integer, boolean, real, char, array, class O espaço de função é um conjunto Usado para construção de tipos funções Pode ser usado como domínio e co-domínio de outras funções [ ] é um tipo para funções de alta ordem (ou funcionais), funções que recebem funções como argumento e devolvem funções como resultado A função que calcula a derivada simbólica é uma função de segunda ordem O par faz parte do conjunto de pares desta função, então, quando a função é aplicada, tem-se

15 -calculus 00(c) 2007 Gustavo Motta 15 Introdução – Funções polimórficas e currying O problema Uma função para calcular o número de elementos de uma lista não deveria depender do tipo dos elementos da lista A solução – funções polimórficas Uma função é dita polimórfica se o tipo de pelo menos um de seus argumentos puder variar de chamada para chamada

16 -calculus 00(c) 2007 Gustavo Motta 16 Introdução – Funções polimórficas e currying Exemplo... void serialize(Object obj) {... }... Circle c = new Circle(...); Date d = new Date(...);... serialize(c);...... serialize(d);... clone equals … Object … Date y, m, d draw width height Rectangle w, h draw diameter Circle r distance move draw Point x, y

17 -calculus 00(c) 2007 Gustavo Motta 17 Introdução – Funções polimórficas e currying O tipo de uma função relaciona-se com a aridadearidade A função de adição de naturais tem o seguinte tipo [ ]add (a, b) = a + b Quando estendida para um número de argumentos arbitrário é chamada de poliádica Por exemplo, a função é poliádica e o seu domínio é ( ) ( ) …

18 -calculus 00(c) 2007 Gustavo Motta 18 Introdução – Funções polimórficas e Currying Linguagens de programação convencionais não suportam funções poliádicas Soluções Funções com um único parâmetro, que é uma seqüência de valores – arrays ou listas Adotar a solução de Currying (Haskell B. Curry)Currying Haskell B. Curry Técnica de transformar uma função que toma múltiplos argumentos numa função que toma um argumento por vez O -calculus sem tipos adota funções Curryed

19 -calculus 00(c) 2007 Gustavo Motta 19 Introdução – Funções polimórficas e Currying Exemplo de Currying Função tradicional [ ]add (a, b) = a + b add(10) erro Função Curryed [ [ ]] add (a) (b) = a + b add (10) add (b) = 10 + b [ ]

20 -calculus 00(c) 2007 Gustavo Motta 20 Bibliografia Revesz, G. E. Lambda-Calculus, Combinators, and Functional Programming. Cambridge University Press, 1988.


Carregar ppt "00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB."

Apresentações semelhantes


Anúncios Google