SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
Calculador Pointfree

        (Jo˜o
           a           Ulisses)        (Moura         Costa)

  Departamento de Inform´tica, Universidade do Minho
                        a


                             Julho 21, 2008




(Jo˜o
   a    Ulisses)    (Moura    Costa)   Calculador Pointfree
Sum´rio
   a



 1   Contextualiza¸˜o
                  ca



 2   Representa¸˜o
               ca



 3   Calculador



 4   Trabalho futuro




             (Jo˜o
                a      Ulisses)   (Moura   Costa)   Calculador Pointfree
Sum´rio
   a



 1   Contextualiza¸˜o
                  ca



 2   Representa¸˜o
               ca



 3   Calculador



 4   Trabalho futuro




             (Jo˜o
                a      Ulisses)   (Moura   Costa)   Calculador Pointfree
An´logo ao c´lculo alg´brico
  a         a         e


  (a + b) + c + d × 0 = a + (b + c)

  ⇔ {Elemento absorvente da multiplica¸˜o}
                                      ca
  (a + b) + c + 0 = a + (b + c)

  ⇔ {Elemento neutro da adi¸˜o}
                            ca
  (a + b) + c = a + (b + c)

  ⇔ {Associatividade da soma}
  a + (b + c) = a + (b + c)

      . . . e o c´lculo Pointfree?
                 a




          (Jo˜o
             a    Ulisses)   (Moura   Costa)   Calculador Pointfree
An´logo ao c´lculo alg´brico
  a         a         e


  (a + b) + c + d × 0 = a + (b + c)

  ⇔ {Elemento absorvente da multiplica¸˜o}
                                      ca
  (a + b) + c + 0 = a + (b + c)

  ⇔ {Elemento neutro da adi¸˜o}
                            ca
  (a + b) + c = a + (b + c)

  ⇔ {Associatividade da soma}
  a + (b + c) = a + (b + c)

      . . . e o c´lculo Pointfree?
                 a




          (Jo˜o
             a    Ulisses)   (Moura   Costa)   Calculador Pointfree
An´logo ao c´lculo alg´brico
  a         a         e


  (a + b) + c + d × 0 = a + (b + c)

  ⇔ {Elemento absorvente da multiplica¸˜o}
                                      ca
  (a + b) + c + 0 = a + (b + c)

  ⇔ {Elemento neutro da adi¸˜o}
                            ca
  (a + b) + c = a + (b + c)

  ⇔ {Associatividade da soma}
  a + (b + c) = a + (b + c)

      . . . e o c´lculo Pointfree?
                 a




          (Jo˜o
             a    Ulisses)   (Moura   Costa)   Calculador Pointfree
An´logo ao c´lculo alg´brico
  a         a         e


  (a + b) + c + d × 0 = a + (b + c)

  ⇔ {Elemento absorvente da multiplica¸˜o}
                                      ca
  (a + b) + c + 0 = a + (b + c)

  ⇔ {Elemento neutro da adi¸˜o}
                            ca
  (a + b) + c = a + (b + c)

  ⇔ {Associatividade da soma}
  a + (b + c) = a + (b + c)

      . . . e o c´lculo Pointfree?
                 a




          (Jo˜o
             a    Ulisses)   (Moura   Costa)   Calculador Pointfree
An´logo ao c´lculo alg´brico
  a         a         e


  (a + b) + c + d × 0 = a + (b + c)

  ⇔ {Elemento absorvente da multiplica¸˜o}
                                      ca
  (a + b) + c + 0 = a + (b + c)

  ⇔ {Elemento neutro da adi¸˜o}
                            ca
  (a + b) + c = a + (b + c)

  ⇔ {Associatividade da soma}
  a + (b + c) = a + (b + c)

      . . . e o c´lculo Pointfree?
                 a




          (Jo˜o
             a    Ulisses)   (Moura   Costa)   Calculador Pointfree
C´lculo Pointfree manual
 a




                                                  Entediante
                                                  N˜o h´ “undo”
                                                   aa




        (Jo˜o
           a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Sum´rio
   a



 1   Contextualiza¸˜o
                  ca



 2   Representa¸˜o
               ca



 3   Calculador



 4   Trabalho futuro




             (Jo˜o
                a      Ulisses)   (Moura   Costa)   Calculador Pointfree
Representa¸˜o abstracta do c´lculo
          ca                a


f ◦ swap ◦ swap = f
                                                                Regras dispon´
                                                                             ıveis
                             =
                                                                       swap = snd        fst
                                               3                              h) ◦ f = g ◦ f     h◦f
                                                                       (g
          ◦r                                       f                   fst ◦ (f   g ) = f , snd ◦ (f   g) = g
                                                                       fst    snd = id
           Ø       quot;
     u                                                                 f ◦ id = f = id ◦ f
         swap swap
 f

          Os nodos s˜o operadores e as folhas fun¸˜es
                    a                            co
          Operador (◦) ´ “flat”, i.e., n-´rio
                       e                a
          fun¸˜o f ´ vari´vel
             ca    e     a
          fun¸˜o swap ´ constante (sabe-se a sua defini¸˜o)
             ca       e                               ca



               (Jo˜o
                  a    Ulisses)   (Moura   Costa)      Calculador Pointfree
Passo 1/9

f ◦ swap ◦ swap = f
                                                                                          Regras aplic´veis:
                                                                                                      a
                                      w7 =
                                w7 w7                                                            swap = snd         fst
                             w7
                       w7 w7                                    3
                    s{                                                                                 h) ◦ f = g ◦ f       h◦f
                                                                                                (g
          ◦                                                             f                       fst ◦ (f     g ) = f , snd ◦ (f   g) = g
          O O
            O O                                                                               fst     snd = id
                          quot;                                                                   f ◦ id = f = id ◦ f
     u   swap swap
 f

                                             Def-swap
                                                                                           Instˆncia¸˜o da regra
                                                                                               a    ca
                                                          =
/0/1/[]
                                                                            quot;
                                                      {
          swap                               swap                                                                            !
                                                                                                              x
                                                                                                       snd                  fst
                                                                                     !
                                                                    x
                                                          snd                       fst


                       (Jo˜o
                          a     Ulisses)     (Moura       Costa)                Calculador Pointfree
´
Arvore resultante




                                                         =

                                                                           3
                                       ◦r                                      f
                                         Ù          quot;
                            u                swap
                     f
                                                quot;
                                y
                   snd                         fst




         (Jo˜o
            a    Ulisses)           (Moura   Costa)     Calculador Pointfree
Passo 2/9

  f ◦ (snd          fst) ◦ swap = f
                             w7 = w7 w7                                                          Regras aplic´veis:
                                                                                                             a
                            w7 w7
                      w7 w7                                         3                                    swap = snd         fst
                 s{
               ◦?
                                                                       f                                           h) ◦ f = g ◦ f      h◦f
                                                                                                          (g
                      ?
                        ?1                                                                             fst ◦ (f      g ) = f , snd ◦ (f       g) = g
       u                                                                                                 fst    snd = id
                          swap
   f                                                                                                     f ◦ id = f = id ◦ f

                               quot;
           y
  snd                       fst

                          Fus˜o-×
                             a
                                                                                                         Instˆncia¸˜o da regra
                                                                                                             a    ca
                                                           =
/0/[1, 2]                                                                   1
                                              ◦o                                                                                            %
(snd fst) ◦
                                                                                                                       ◦p
                                                                                                                                 ◦
                                          v                     ◦t                                                             $        '
    swap                                                                                         ◦
                                                                                                           snd v
                                                     f                                                                       swap fst swap
                                                                                                   
                                                                                        ht
                                                           gt
                               gt             h                                 f                    f
                    (Jo˜o
                       a           Ulisses)       (Moura   Costa)                   Calculador Pointfree
´
Arvore resultante



                                                    =
                                                              quot;
                                             ◦u               f
                                                    #
                                       u
                                  f
                                                                  quot;
                                  ◦r                          ◦
                                             quot;                         quot;
                            y                             w
                                           swap                       swap
                  snd                               fst




         (Jo˜o
            a    Ulisses)       (Moura     Costa)   Calculador Pointfree
Passo 3/9

f ◦ (snd ◦ swap                 fst ◦ swap) = f
                                                                                     Regras aplic´veis:
                                                                                                 a
                             y9 = quot;
                       u} y9                                                                swap = snd         fst
                      ◦ $d            f
                             $d 2@                                                                h) ◦ f = g ◦ f       h◦f
                                                                                           (g
             r
                               u5
         f                                                                                 fst ◦ (f     g ) = f , snd ◦ (f   g) = g
                    u5 u5 u5
           qy u5
                                                                                           fst     snd = id
         ◦ $d                                 ◦                                            f ◦ id = f = id ◦ f
                 2@                                       $
       v
                                     fst u
                 swap                             swap
 snd

                                             Def-swap
                                                                                      Instˆncia¸˜o da regra
                                                                                          a    ca
                                                              =
/0/1/0/1/[]
                                                                       quot;
                                                      {
      swap                                   swap                                                                       !
                                                                                                         x
                                                                                                  snd                  fst
                                                                                !
                                                                   x
                                                          snd                  fst

                   (Jo˜o
                      a       Ulisses)       (Moura           Costa)       Calculador Pointfree
´
Arvore resultante


                                                          =
                                                                      quot;
                                                     ◦u               f
                                                          #
                                       u
                                  f
                                                                          quot;
                                  ◦r                                  ◦
                                                 #                             quot;
                            y                                     w           swap
                  snd                                     fst
                                                              quot;
                                           y
                                snd                       fst



         (Jo˜o
            a    Ulisses)       (Moura         Costa)     Calculador Pointfree
Passo 4/9

f ◦ (snd ◦ (snd                                      fst ◦ swap) = f
                                       fst)
                                       =
                             {;                                                       Regras aplic´veis:
                                                                                                  a
                                                 quot;
                          w
                      ◦ !a                       f                                          swap = snd        fst
                                  )7                                                               h) ◦ f = g ◦ f   h◦f
                                                                                            (g

            fr            u5                                                                fst ◦ (f    g) = f ,
                    u5 u5
              qy u5
                                                                                             snd ◦ (f     g) = g
            ◦                                    ◦
                      $                                                                     fst    snd = id
                                                          $
                                             v
       t                                                                                    f ◦ id = f = id ◦ f
                                                       swap
 snd                                   fst
                                        quot;
                  v
           snd                         fst

                                                 Cancelamento-×
                                                               =
                                                                 !                                 Instˆncia¸˜o da
                                                                                                       a    ca
/0/1/0/[]                                                    q   g
                                                           ◦                                       regra
                                                                            !
                                                                  w
 snd ◦ (snd            fst)
                                                          snd                                               fst
                                                                                  
                                                                       fs        g
                 (Jo˜o
                    a          Ulisses)          (Moura       Costa)        Calculador Pointfree
´
Arvore resultante



                                               =
                                                           quot;
                                     ◦u                    f
                                               #
                                u
                            f
                                                               quot;
                                           w
                                                           ◦
                                     fst
                                                                    quot;
                                                      w            swap
                                               fst




         (Jo˜o
            a    Ulisses)   (Moura   Costa)        Calculador Pointfree
Passo 5/9

f ◦ (fst         fst ◦ swap) = f
                    =                                                                            Regras aplic´veis:
                                                                                                             a
                {;                              quot;
            w
           ◦ !a                                                                                         swap = snd         fst
                                                f
                      )7                                                                                      h) ◦ f = g ◦ f       h◦f
                                                                                                       (g
   ft                                                                                                  fst ◦ (f     g ) = f , snd ◦ (f   g) = g
                                     _ _ '5                                                          fst     snd = id
                 u                              ◦ #c
           fst                                                                                         f ◦ id = f = id ◦ f
                                                       19
                                 v                     swap
                           fst

                                                       Def-swap
                                                                                                  Instˆncia¸˜o da regra
                                                                                                      a    ca
                                                                         =
/0/1/1/1/[]
                                                                                   quot;
                                                                     {
      swap                                                  swap                                                                    !
                                                                                                                     x
                                                                                                              snd                  fst
                                                                                            !
                                                                               x
                                                                         snd               fst

                     (Jo˜o
                        a               Ulisses)            (Moura       Costa)        Calculador Pointfree
´
Arvore resultante


                                                           =
                                                                       quot;
                                             ◦u                        f
                                                           #
                                u
                            f
                                                                           quot;
                                                  w
                                                                       ◦
                                         fst
                                                                                   #
                                                               w
                                                       fst
                                                                                          quot;
                                                                               y
                                                                      snd                 fst



         (Jo˜o
            a    Ulisses)           (Moura        Costa)           Calculador Pointfree
Passo 6/9

f ◦ (fst          fst ◦ (snd                                fst)) = f
                     =
                    {;                          %                                              Regras aplic´veis:
                                                                                                           a
                 w
           ◦ !a                                     f                                                 swap = snd        fst
                         )7                                                                                  h) ◦ f = g ◦ f       h◦f
                                                                                                      (g
   ft
                                      quot;b                                                               fst ◦ (f    g) = f     ,
                                           08
                   u                                                                                  snd ◦ (f     g) = g
                                                    ◦
           fst                                                                                        fst    snd = id
                                                             #
                              fst t
                                                                                                      f ◦ id = f = id ◦ f


                                                                      quot;
                                                        v
                                           snd                       fst

                                                            Cancelamento-×
                                                                         =
                                                                           !                                 Instˆncia¸˜o da
                                                                                                                 a    ca
/0/1/1/[]                                                            ◦r    f                                 regra
 fst ◦ (snd                                                                  v
                               fst)
                                                                     fst                                             snd
                                                                                           
                                                                                 fs        g
                       (Jo˜o
                          a           Ulisses)              (Moura        Costa)      Calculador Pointfree
´
Arvore resultante




                                               =
                                                        quot;
                                      ◦u                f
                                               #
                                 u
                             f
                                                        quot;
                                           w
                                     fst              snd




         (Jo˜o
            a    Ulisses)   (Moura   Costa)    Calculador Pointfree
Passo 7/9


f ◦ (fst   snd) = f
                                                                                                   Regras aplic´veis:
                                                                                                               a
                                                         =
                                      ? ? ? ?                                                       swap = snd        fst
                                                                      !
                         {Ó                                                                                    h) ◦ f = g ◦ f       h◦f
                                                                                                        (g
                   ◦                                              f
                                  _ _                                                                 fst ◦ (f     g ) = f , snd ◦ (f   g) = g
                                                    '5
           fu
                                                                                                         fst       snd = id

                                                                                                        f ◦ id = f = id ◦ f
                                                                  !
                              w
                   fst                                          snd

                                                         Reflex˜o-×
                                                              a
                                                                                                               Instˆncia¸˜o da
                                                                                                                   a    ca
                                                                                       =
/0/1/[]                                                                                       #                regra
                                                                                   r          id
     fst   snd
                                                                                        #                               id
                                                                  fst u                snd


           (Jo˜o
              a     Ulisses)                                 (Moura       Costa)        Calculador Pointfree
´
Arvore resultante




                                              =
                                                      !
                                        ◦u            f
                                              !
                                fu            id




         (Jo˜o
            a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Passo 8/9


 f ◦ (fst   snd) = f                                                              Regras aplic´veis:
                                                                                              a
                                            =                                         swap = snd        fst

                              ? ? ? ?                                                    h) ◦ f = g ◦ f     h◦f
                                                                                      (g
                                                         !
                         {Ó                                                           fst ◦ (f   g ) = f , snd ◦ (f   g) = g
                     ◦                                   f                            fst    snd = id

                                            !                                          f ◦ id = f = id ◦ f
             fu                             id

                                            Natural-Id
                                                                      =                      Instˆncia¸˜o da
                                                                                                 a    ca
/0/[]                                                                         !              regra
                                                                ◦u            f
        f ◦ id
                                                                                                       f
                                                                      !
                                                    fu                id



             (Jo˜o
                a    Ulisses)                   (Moura       Costa)   Calculador Pointfree
´
Arvore resultante




                                                  =
                                                           quot;
                                         u
                                     f                     f




         (Jo˜o
            a    Ulisses)   (Moura       Costa)       Calculador Pointfree
Passo 9/9




     Provado f ◦ swap ◦ swap = f




        (Jo˜o
           a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Sum´rio
   a



 1   Contextualiza¸˜o
                  ca



 2   Representa¸˜o
               ca



 3   Calculador



 4   Trabalho futuro




             (Jo˜o
                a      Ulisses)   (Moura   Costa)   Calculador Pointfree
Aspecto geral




            1 Input
            2 Regras aplic´veis
                          a
            3 Estado da prova



         (Jo˜o
            a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Input




        Introdu¸˜o da prova
               ca




           (Jo˜o
              a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Regras aplic´veis
            a




      Navega¸˜o
            ca
          PgUp / PgDn
          enter
      Instˆncia¸˜o da regra em 1
          a    ca
      Carregar regras

         (Jo˜o
            a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Regras aplic´veis
            a




      Navega¸˜o
            ca
          PgUp / PgDn
          enter
      Instˆncia¸˜o da regra em 1
          a    ca
      Carregar regras

         (Jo˜o
            a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Regras aplic´veis
            a




      Navega¸˜o
            ca
          PgUp / PgDn
          enter
      Instˆncia¸˜o da regra em 1
          a    ca
      Carregar regras

         (Jo˜o
            a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Regras aplic´veis
            a




      Navega¸˜o
            ca
          PgUp / PgDn
          enter
      Instˆncia¸˜o da regra em 1
          a    ca
      Carregar regras

         (Jo˜o
            a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Estado da prova




     Navega¸˜o
           ca
         up / down - n´  ıveis
         left / right - filhos
         backspace - undo
     Load / Save em XML
     Exporta¸˜o PDF
            ca

        (Jo˜o
           a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Estado da prova




     Navega¸˜o
           ca
         up / down - n´  ıveis
         left / right - filhos
         backspace - undo
     Load / Save em XML
     Exporta¸˜o PDF
            ca

        (Jo˜o
           a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Estado da prova




     Navega¸˜o
           ca
         up / down - n´  ıveis
         left / right - filhos
         backspace - undo
     Load / Save em XML
     Exporta¸˜o PDF
            ca

        (Jo˜o
           a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Estado da prova




     Navega¸˜o
           ca
         up / down - n´  ıveis
         left / right - filhos
         backspace - undo
     Load / Save em XML
     Exporta¸˜o PDF
            ca

        (Jo˜o
           a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Sum´rio
   a



 1   Contextualiza¸˜o
                  ca



 2   Representa¸˜o
               ca



 3   Calculador



 4   Trabalho futuro




             (Jo˜o
                a      Ulisses)   (Moura   Costa)   Calculador Pointfree
C´lculo sobre fun¸oes recursivas
 a               c˜

      O estado actual do programa j´ o permite, no entanto
                                   a
      temos que ter uma regra para cada tipo recurisvo

  Ficheiro de regras
      cataList g = g ◦ (id + id × cataList g ) ◦ outList
      anaList h = inList ◦ (id + id × cataList g ) ◦ h
      cataLTree g = g ◦ (id + id × cataLTree g × cataLTree g ) ◦ outLTree
      anaBTree h = inBTree ◦ (id + id × cataBTree g × cataBTree g ) ◦ h
      cataRoseTree g = g ◦ (id × map(cataRoseTree g )) ◦ outRoseTree

  Solu¸˜o: inferˆncia de tipos para ter apenas a defini¸˜o geral de
      ca        e                                     ca
  cata:
  Ficheiro de regras com inferˆncia de tipos
                              e
      cataT g FT outT = g ◦ FT ◦ outT
      anaT h FT inT = inT ◦ FT ◦ h


           (Jo˜o
              a    Ulisses)   (Moura   Costa)   Calculador Pointfree
C´lculo sobre fun¸oes recursivas
 a               c˜

      O estado actual do programa j´ o permite, no entanto
                                   a
      temos que ter uma regra para cada tipo recurisvo

  Ficheiro de regras
      cataList g = g ◦ (id + id × cataList g ) ◦ outList
      anaList h = inList ◦ (id + id × cataList g ) ◦ h
      cataLTree g = g ◦ (id + id × cataLTree g × cataLTree g ) ◦ outLTree
      anaBTree h = inBTree ◦ (id + id × cataBTree g × cataBTree g ) ◦ h
      cataRoseTree g = g ◦ (id × map(cataRoseTree g )) ◦ outRoseTree

  Solu¸˜o: inferˆncia de tipos para ter apenas a defini¸˜o geral de
      ca        e                                     ca
  cata:
  Ficheiro de regras com inferˆncia de tipos
                              e
      cataT g FT outT = g ◦ FT ◦ outT
      anaT h FT inT = inT ◦ FT ◦ h


           (Jo˜o
              a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Inferˆncia de tipos
     e
      Algoritmo Damas-Milner
  round : R → N ⇔ roundR
                       N

  Inferˆncia de tipos para h = f ◦ g ◦ round
       e




          (Jo˜o
             a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Inferˆncia de tipos
     e
      Algoritmo Damas-Milner
  round : R → N ⇔ roundR
                       N

  Inferˆncia de tipos para h = f ◦ g ◦ round
       e




          (Jo˜o
             a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Inferˆncia de tipos
     e
      Algoritmo Damas-Milner
  round : R → N ⇔ roundR
                       N

  Inferˆncia de tipos para h = f ◦ g ◦ round
       e
  ht7 = ftt2 ◦ gtt34 ◦ roundtt56
   t8
          1
  ⇔ {Regra do ◦}




             (Jo˜o
                a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Inferˆncia de tipos
     e
      Algoritmo Damas-Milner
  round : R → N ⇔ roundR
                       N

  Inferˆncia de tipos para h = f ◦ g ◦ round
       e



  ht7 = (ftt2 ◦ gtt34 ◦ roundtt56 )t2
   t8
                                   t5
           1
  ⇔ {t2 ∼ t8 , t5 ∼ t7 }




             (Jo˜o
                a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Inferˆncia de tipos
     e
      Algoritmo Damas-Milner
  round : R → N ⇔ roundR
                       N

  Inferˆncia de tipos para h = f ◦ g ◦ round
       e




  ht5 = (ftt2 ◦ gtt34 ◦ roundtt56 )t2
   t2
                                   t5
           1
  ⇔ {t1 ∼ t4 , t3 ∼ t6 }




             (Jo˜o
                a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Inferˆncia de tipos
     e
      Algoritmo Damas-Milner
  round : R → N ⇔ roundR
                       N

  Inferˆncia de tipos para h = f ◦ g ◦ round
       e




  ht5 = (ftt2 ◦ gtt31 ◦ roundtt53 )t2
   t2
                                   t5
           1
  ⇔ {t5 ∼ R, t3 ∼ N}




             (Jo˜o
                a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Inferˆncia de tipos
     e
      Algoritmo Damas-Milner
  round : R → N ⇔ roundR
                       N

  Inferˆncia de tipos para h = f ◦ g ◦ round
       e




  hR = (ftt2 ◦ gN1 ◦ roundR )t2
   t2           t         N
          1                  R

  Conclus˜o:
         a
  h : R → t2
  f : t1 → t2
  g : N → t1
            (Jo˜o
               a    Ulisses)   (Moura   Costa)   Calculador Pointfree
Formul´rio para inferˆncia de tipos no c´lculo Pointfree
      a              e                  a


                                                                      ftt2                          gtt32
      ftt2                         gtt34                                1
        1
                                           +
                                                                                     g )t2 +t3
                                                                             (f
             (f + g )t2 +t4                                                             t1
                     t1 +t2


                                                                             ftt2           gtt12
      ftt2                         gtt34                                       1
        1
                                                                                                     =
                                           ×
                                                                                    TRUE
             (f × g )t2 ×t4
                     t1 ×t2

                                                                                      n
     ftt2                          gtt13                                                                    zttn+1
                                                              ftt2 gtt31                                       n
                                                                                      ...
       1
                                                                1
                                                                                                                     ◦
                      g )t2 ×t3
             (f                                                                                z)t2
                         t1                                                (f ◦ g ◦ . . . ◦      tn+1


                                                                                                     . . . quest˜es?
                                                                                                                o
                                                        FIM
              (Jo˜o
                 a      Ulisses)    (Moura     Costa)     Calculador Pointfree

Weitere ähnliche Inhalte

Was ist angesagt?

Apostila função do 1 grau
Apostila   função do 1 grauApostila   função do 1 grau
Apostila função do 1 grauCelia Lana
 
Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Jim Naturesa
 
Função exponencial e função logarítmica
Função exponencial e função logarítmicaFunção exponencial e função logarítmica
Função exponencial e função logarítmicaEverton Moraes
 
Lista II - Funções
Lista II - FunçõesLista II - Funções
Lista II - FunçõesFeefelipeeRS
 
Funções trigonométricas
Funções trigonométricasFunções trigonométricas
Funções trigonométricasMackenzie Solano
 
Ap extra exercicios_n. complexos
Ap extra exercicios_n. complexosAp extra exercicios_n. complexos
Ap extra exercicios_n. complexoscon_seguir
 
Restrição e prolongamento de uma função: Exercícios resolvidos
Restrição e prolongamento de uma função:  Exercícios resolvidosRestrição e prolongamento de uma função:  Exercícios resolvidos
Restrição e prolongamento de uma função: Exercícios resolvidosnumerosnamente
 
Lista funcao quadratica
Lista funcao quadraticaLista funcao quadratica
Lista funcao quadraticalittlevic4
 
Funcoes Trigonometricas Bom
Funcoes Trigonometricas BomFuncoes Trigonometricas Bom
Funcoes Trigonometricas BomAntonio Carneiro
 
Aula4 derivadas integrais
Aula4 derivadas integraisAula4 derivadas integrais
Aula4 derivadas integraisWeslley Murdock
 
Exercícios sobre função
Exercícios sobre funçãoExercícios sobre função
Exercícios sobre funçãoDayanne Sousa
 

Was ist angesagt? (19)

Apostila função do 1 grau
Apostila   função do 1 grauApostila   função do 1 grau
Apostila função do 1 grau
 
Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)
 
Função exponencial e função logarítmica
Função exponencial e função logarítmicaFunção exponencial e função logarítmica
Função exponencial e função logarítmica
 
Lista II - Funções
Lista II - FunçõesLista II - Funções
Lista II - Funções
 
1 lista 3 bim 9 ano
1 lista 3 bim 9 ano1 lista 3 bim 9 ano
1 lista 3 bim 9 ano
 
Funções trigonométricas
Funções trigonométricasFunções trigonométricas
Funções trigonométricas
 
Função 2o grau
Função 2o grauFunção 2o grau
Função 2o grau
 
Ap extra exercicios_n. complexos
Ap extra exercicios_n. complexosAp extra exercicios_n. complexos
Ap extra exercicios_n. complexos
 
Restrição e prolongamento de uma função: Exercícios resolvidos
Restrição e prolongamento de uma função:  Exercícios resolvidosRestrição e prolongamento de uma função:  Exercícios resolvidos
Restrição e prolongamento de uma função: Exercícios resolvidos
 
Introd Funcao 3
Introd Funcao 3Introd Funcao 3
Introd Funcao 3
 
Aula no
Aula noAula no
Aula no
 
Lista funcao quadratica
Lista funcao quadraticaLista funcao quadratica
Lista funcao quadratica
 
Funcoes Trigonometricas Bom
Funcoes Trigonometricas BomFuncoes Trigonometricas Bom
Funcoes Trigonometricas Bom
 
Aula4 derivadas integrais
Aula4 derivadas integraisAula4 derivadas integrais
Aula4 derivadas integrais
 
1 lista 900 - 1bi 2013
1 lista   900 - 1bi 20131 lista   900 - 1bi 2013
1 lista 900 - 1bi 2013
 
Exercícios sobre função
Exercícios sobre funçãoExercícios sobre função
Exercícios sobre função
 
Função composta
Função compostaFunção composta
Função composta
 
Trigonometria PARTE 2
Trigonometria PARTE 2Trigonometria PARTE 2
Trigonometria PARTE 2
 
Tensão média e tensão eficaz
Tensão média e tensão eficazTensão média e tensão eficaz
Tensão média e tensão eficaz
 

Andere mochten auch

Drupal - 國內中小企業應用案例 - 20080718 自由軟體解決方案研討會
Drupal  - 國內中小企業應用案例  - 20080718 自由軟體解決方案研討會Drupal  - 國內中小企業應用案例  - 20080718 自由軟體解決方案研討會
Drupal - 國內中小企業應用案例 - 20080718 自由軟體解決方案研討會Charles Chuang
 
SRX Antonio Carraro_IT
SRX Antonio Carraro_ITSRX Antonio Carraro_IT
SRX Antonio Carraro_ITantoniocarraro
 
Medicamentos Naturais
Medicamentos NaturaisMedicamentos Naturais
Medicamentos Naturaiscab3032
 
Prohibido P.Neruda
Prohibido P.NerudaProhibido P.Neruda
Prohibido P.Nerudaguest1abf9e
 
JimBeckmannPortfolio_RalphLauren
JimBeckmannPortfolio_RalphLaurenJimBeckmannPortfolio_RalphLauren
JimBeckmannPortfolio_RalphLaurenJim Beckmann
 
A utilização da Denúncia Política nas estratégias de campanha da Cidade do Re...
A utilização da Denúncia Política nas estratégias de campanha da Cidade do Re...A utilização da Denúncia Política nas estratégias de campanha da Cidade do Re...
A utilização da Denúncia Política nas estratégias de campanha da Cidade do Re...Fernando Holanda
 
PresentacióN Expo Zaragoza
PresentacióN Expo ZaragozaPresentacióN Expo Zaragoza
PresentacióN Expo ZaragozaSEHACESABER.ORG
 
TP1 11-03-08 Problema_2
TP1 11-03-08 Problema_2TP1 11-03-08 Problema_2
TP1 11-03-08 Problema_2mec_fluidos
 
Aprende A Ajudar! 2 P (Ppt03) Ss
Aprende A Ajudar! 2 P (Ppt03) SsAprende A Ajudar! 2 P (Ppt03) Ss
Aprende A Ajudar! 2 P (Ppt03) Ssguest8ce8d0
 
Karya seni terapan minang kabau
Karya seni terapan minang kabauKarya seni terapan minang kabau
Karya seni terapan minang kabauVJ Asenk
 
presentatie afrikaanderwijk
presentatie afrikaanderwijkpresentatie afrikaanderwijk
presentatie afrikaanderwijkWalter Holthaus
 
Comunicado a la opinión pública del gerente de Canal Capital, Hollman Morris
Comunicado a la opinión pública del gerente de Canal Capital, Hollman MorrisComunicado a la opinión pública del gerente de Canal Capital, Hollman Morris
Comunicado a la opinión pública del gerente de Canal Capital, Hollman MorrisCanal Capital
 
Práctica 5. grupo 2 iaie
Práctica 5. grupo 2 iaiePráctica 5. grupo 2 iaie
Práctica 5. grupo 2 iaienorabm
 
Bibliopaper+1º+ciclo
Bibliopaper+1º+cicloBibliopaper+1º+ciclo
Bibliopaper+1º+ciclorbesjm
 

Andere mochten auch (20)

Drupal - 國內中小企業應用案例 - 20080718 自由軟體解決方案研討會
Drupal  - 國內中小企業應用案例  - 20080718 自由軟體解決方案研討會Drupal  - 國內中小企業應用案例  - 20080718 自由軟體解決方案研討會
Drupal - 國內中小企業應用案例 - 20080718 自由軟體解決方案研討會
 
SRX Antonio Carraro_IT
SRX Antonio Carraro_ITSRX Antonio Carraro_IT
SRX Antonio Carraro_IT
 
Medicamentos Naturais
Medicamentos NaturaisMedicamentos Naturais
Medicamentos Naturais
 
Zolan
ZolanZolan
Zolan
 
Prohibido P.Neruda
Prohibido P.NerudaProhibido P.Neruda
Prohibido P.Neruda
 
Unsur Cereka
Unsur CerekaUnsur Cereka
Unsur Cereka
 
Malaga
MalagaMalaga
Malaga
 
JimBeckmannPortfolio_RalphLauren
JimBeckmannPortfolio_RalphLaurenJimBeckmannPortfolio_RalphLauren
JimBeckmannPortfolio_RalphLauren
 
Amor cortès
Amor cortèsAmor cortès
Amor cortès
 
Best Net Photos
Best Net PhotosBest Net Photos
Best Net Photos
 
A utilização da Denúncia Política nas estratégias de campanha da Cidade do Re...
A utilização da Denúncia Política nas estratégias de campanha da Cidade do Re...A utilização da Denúncia Política nas estratégias de campanha da Cidade do Re...
A utilização da Denúncia Política nas estratégias de campanha da Cidade do Re...
 
PresentacióN Expo Zaragoza
PresentacióN Expo ZaragozaPresentacióN Expo Zaragoza
PresentacióN Expo Zaragoza
 
La radio
La radioLa radio
La radio
 
TP1 11-03-08 Problema_2
TP1 11-03-08 Problema_2TP1 11-03-08 Problema_2
TP1 11-03-08 Problema_2
 
Aprende A Ajudar! 2 P (Ppt03) Ss
Aprende A Ajudar! 2 P (Ppt03) SsAprende A Ajudar! 2 P (Ppt03) Ss
Aprende A Ajudar! 2 P (Ppt03) Ss
 
Karya seni terapan minang kabau
Karya seni terapan minang kabauKarya seni terapan minang kabau
Karya seni terapan minang kabau
 
presentatie afrikaanderwijk
presentatie afrikaanderwijkpresentatie afrikaanderwijk
presentatie afrikaanderwijk
 
Comunicado a la opinión pública del gerente de Canal Capital, Hollman Morris
Comunicado a la opinión pública del gerente de Canal Capital, Hollman MorrisComunicado a la opinión pública del gerente de Canal Capital, Hollman Morris
Comunicado a la opinión pública del gerente de Canal Capital, Hollman Morris
 
Práctica 5. grupo 2 iaie
Práctica 5. grupo 2 iaiePráctica 5. grupo 2 iaie
Práctica 5. grupo 2 iaie
 
Bibliopaper+1º+ciclo
Bibliopaper+1º+cicloBibliopaper+1º+ciclo
Bibliopaper+1º+ciclo
 

Mehr von Ulisses Costa

Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for SpaceUlisses Costa
 
Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for SpaceUlisses Costa
 
Static Code Analyzer - Part IV
Static Code Analyzer - Part IVStatic Code Analyzer - Part IV
Static Code Analyzer - Part IVUlisses Costa
 
Specifying and Implementing SNOW3G with Cryptol
Specifying and Implementing SNOW3G with CryptolSpecifying and Implementing SNOW3G with Cryptol
Specifying and Implementing SNOW3G with CryptolUlisses Costa
 
Static Code Analyzer - Part III
Static Code Analyzer - Part IIIStatic Code Analyzer - Part III
Static Code Analyzer - Part IIIUlisses Costa
 
Static Code Analyzer - Part II
Static Code Analyzer - Part IIStatic Code Analyzer - Part II
Static Code Analyzer - Part IIUlisses Costa
 
Static Code Analyzer - Part I
Static Code Analyzer - Part IStatic Code Analyzer - Part I
Static Code Analyzer - Part IUlisses Costa
 
GD::Graph - Graph Plotting Module
GD::Graph - Graph Plotting ModuleGD::Graph - Graph Plotting Module
GD::Graph - Graph Plotting ModuleUlisses Costa
 
Captura de Informação em Rede
Captura de Informação em RedeCaptura de Informação em Rede
Captura de Informação em RedeUlisses Costa
 
Correct sorting with Frama-C
Correct sorting with Frama-CCorrect sorting with Frama-C
Correct sorting with Frama-CUlisses Costa
 
The Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLThe Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLUlisses Costa
 
Splint the C code static checker
Splint the C code static checkerSplint the C code static checker
Splint the C code static checkerUlisses Costa
 
Exploring the Cryptol Toolset
Exploring the Cryptol ToolsetExploring the Cryptol Toolset
Exploring the Cryptol ToolsetUlisses Costa
 
Specification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolSpecification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolUlisses Costa
 
Snort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeSnort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeUlisses Costa
 
Uso de Honeypots com Honeyd
Uso de Honeypots com HoneydUso de Honeypots com Honeyd
Uso de Honeypots com HoneydUlisses Costa
 

Mehr von Ulisses Costa (20)

Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for Space
 
Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for Space
 
Static Code Analyzer - Part IV
Static Code Analyzer - Part IVStatic Code Analyzer - Part IV
Static Code Analyzer - Part IV
 
Specifying and Implementing SNOW3G with Cryptol
Specifying and Implementing SNOW3G with CryptolSpecifying and Implementing SNOW3G with Cryptol
Specifying and Implementing SNOW3G with Cryptol
 
Static Code Analyzer - Part III
Static Code Analyzer - Part IIIStatic Code Analyzer - Part III
Static Code Analyzer - Part III
 
Static Code Analyzer - Part II
Static Code Analyzer - Part IIStatic Code Analyzer - Part II
Static Code Analyzer - Part II
 
Static Code Analyzer - Part I
Static Code Analyzer - Part IStatic Code Analyzer - Part I
Static Code Analyzer - Part I
 
logCesium01
logCesium01logCesium01
logCesium01
 
Cesium Log ed2
Cesium Log ed2Cesium Log ed2
Cesium Log ed2
 
GD::Graph - Graph Plotting Module
GD::Graph - Graph Plotting ModuleGD::Graph - Graph Plotting Module
GD::Graph - Graph Plotting Module
 
Captura de Informação em Rede
Captura de Informação em RedeCaptura de Informação em Rede
Captura de Informação em Rede
 
Cryptol experience
Cryptol experienceCryptol experience
Cryptol experience
 
Correct sorting with Frama-C
Correct sorting with Frama-CCorrect sorting with Frama-C
Correct sorting with Frama-C
 
The Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLThe Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDL
 
Splint the C code static checker
Splint the C code static checkerSplint the C code static checker
Splint the C code static checker
 
Exploring the Cryptol Toolset
Exploring the Cryptol ToolsetExploring the Cryptol Toolset
Exploring the Cryptol Toolset
 
Specification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolSpecification of SNOW 3G in Cryptol
Specification of SNOW 3G in Cryptol
 
Snort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeSnort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da rede
 
LDAP em VDM++
LDAP em VDM++LDAP em VDM++
LDAP em VDM++
 
Uso de Honeypots com Honeyd
Uso de Honeypots com HoneydUso de Honeypots com Honeyd
Uso de Honeypots com Honeyd
 

Calculador Pointfree

  • 1. Calculador Pointfree (Jo˜o a Ulisses) (Moura Costa) Departamento de Inform´tica, Universidade do Minho a Julho 21, 2008 (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 2. Sum´rio a 1 Contextualiza¸˜o ca 2 Representa¸˜o ca 3 Calculador 4 Trabalho futuro (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 3. Sum´rio a 1 Contextualiza¸˜o ca 2 Representa¸˜o ca 3 Calculador 4 Trabalho futuro (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 4. An´logo ao c´lculo alg´brico a a e (a + b) + c + d × 0 = a + (b + c) ⇔ {Elemento absorvente da multiplica¸˜o} ca (a + b) + c + 0 = a + (b + c) ⇔ {Elemento neutro da adi¸˜o} ca (a + b) + c = a + (b + c) ⇔ {Associatividade da soma} a + (b + c) = a + (b + c) . . . e o c´lculo Pointfree? a (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 5. An´logo ao c´lculo alg´brico a a e (a + b) + c + d × 0 = a + (b + c) ⇔ {Elemento absorvente da multiplica¸˜o} ca (a + b) + c + 0 = a + (b + c) ⇔ {Elemento neutro da adi¸˜o} ca (a + b) + c = a + (b + c) ⇔ {Associatividade da soma} a + (b + c) = a + (b + c) . . . e o c´lculo Pointfree? a (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 6. An´logo ao c´lculo alg´brico a a e (a + b) + c + d × 0 = a + (b + c) ⇔ {Elemento absorvente da multiplica¸˜o} ca (a + b) + c + 0 = a + (b + c) ⇔ {Elemento neutro da adi¸˜o} ca (a + b) + c = a + (b + c) ⇔ {Associatividade da soma} a + (b + c) = a + (b + c) . . . e o c´lculo Pointfree? a (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 7. An´logo ao c´lculo alg´brico a a e (a + b) + c + d × 0 = a + (b + c) ⇔ {Elemento absorvente da multiplica¸˜o} ca (a + b) + c + 0 = a + (b + c) ⇔ {Elemento neutro da adi¸˜o} ca (a + b) + c = a + (b + c) ⇔ {Associatividade da soma} a + (b + c) = a + (b + c) . . . e o c´lculo Pointfree? a (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 8. An´logo ao c´lculo alg´brico a a e (a + b) + c + d × 0 = a + (b + c) ⇔ {Elemento absorvente da multiplica¸˜o} ca (a + b) + c + 0 = a + (b + c) ⇔ {Elemento neutro da adi¸˜o} ca (a + b) + c = a + (b + c) ⇔ {Associatividade da soma} a + (b + c) = a + (b + c) . . . e o c´lculo Pointfree? a (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 9. C´lculo Pointfree manual a Entediante N˜o h´ “undo” aa (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 10. Sum´rio a 1 Contextualiza¸˜o ca 2 Representa¸˜o ca 3 Calculador 4 Trabalho futuro (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 11. Representa¸˜o abstracta do c´lculo ca a f ◦ swap ◦ swap = f Regras dispon´ ıveis = swap = snd fst 3 h) ◦ f = g ◦ f h◦f (g ◦r f fst ◦ (f g ) = f , snd ◦ (f g) = g fst snd = id Ø quot; u f ◦ id = f = id ◦ f swap swap f Os nodos s˜o operadores e as folhas fun¸˜es a co Operador (◦) ´ “flat”, i.e., n-´rio e a fun¸˜o f ´ vari´vel ca e a fun¸˜o swap ´ constante (sabe-se a sua defini¸˜o) ca e ca (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 12. Passo 1/9 f ◦ swap ◦ swap = f Regras aplic´veis: a w7 = w7 w7 swap = snd fst w7 w7 w7 3 s{ h) ◦ f = g ◦ f h◦f (g ◦ f fst ◦ (f g ) = f , snd ◦ (f g) = g O O O O fst snd = id quot; f ◦ id = f = id ◦ f u swap swap f Def-swap Instˆncia¸˜o da regra a ca = /0/1/[] quot; { swap swap ! x snd fst ! x snd fst (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 13. ´ Arvore resultante = 3 ◦r f Ù quot; u swap f quot; y snd fst (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 14. Passo 2/9 f ◦ (snd fst) ◦ swap = f w7 = w7 w7 Regras aplic´veis: a w7 w7 w7 w7 3 swap = snd fst s{ ◦? f h) ◦ f = g ◦ f h◦f (g ? ?1 fst ◦ (f g ) = f , snd ◦ (f g) = g u fst snd = id swap f f ◦ id = f = id ◦ f quot; y snd fst Fus˜o-× a Instˆncia¸˜o da regra a ca = /0/[1, 2] 1 ◦o % (snd fst) ◦ ◦p ◦ v ◦t $ ' swap ◦ snd v f swap fst swap ht gt gt h f f (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 15. ´ Arvore resultante = quot; ◦u f # u f quot; ◦r ◦ quot; quot; y w swap swap snd fst (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 16. Passo 3/9 f ◦ (snd ◦ swap fst ◦ swap) = f Regras aplic´veis: a y9 = quot; u} y9 swap = snd fst ◦ $d f $d 2@ h) ◦ f = g ◦ f h◦f (g r u5 f fst ◦ (f g ) = f , snd ◦ (f g) = g u5 u5 u5 qy u5 fst snd = id ◦ $d ◦ f ◦ id = f = id ◦ f 2@ $ v fst u swap swap snd Def-swap Instˆncia¸˜o da regra a ca = /0/1/0/1/[] quot; { swap swap ! x snd fst ! x snd fst (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 17. ´ Arvore resultante = quot; ◦u f # u f quot; ◦r ◦ # quot; y w swap snd fst quot; y snd fst (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 18. Passo 4/9 f ◦ (snd ◦ (snd fst ◦ swap) = f fst) = {; Regras aplic´veis: a quot; w ◦ !a f swap = snd fst )7 h) ◦ f = g ◦ f h◦f (g fr u5 fst ◦ (f g) = f , u5 u5 qy u5 snd ◦ (f g) = g ◦ ◦ $ fst snd = id $ v t f ◦ id = f = id ◦ f swap snd fst quot; v snd fst Cancelamento-× = ! Instˆncia¸˜o da a ca /0/1/0/[] q g ◦ regra ! w snd ◦ (snd fst) snd fst fs g (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 19. ´ Arvore resultante = quot; ◦u f # u f quot; w ◦ fst quot; w swap fst (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 20. Passo 5/9 f ◦ (fst fst ◦ swap) = f = Regras aplic´veis: a {; quot; w ◦ !a swap = snd fst f )7 h) ◦ f = g ◦ f h◦f (g ft fst ◦ (f g ) = f , snd ◦ (f g) = g _ _ '5 fst snd = id u ◦ #c fst f ◦ id = f = id ◦ f 19 v swap fst Def-swap Instˆncia¸˜o da regra a ca = /0/1/1/1/[] quot; { swap swap ! x snd fst ! x snd fst (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 21. ´ Arvore resultante = quot; ◦u f # u f quot; w ◦ fst # w fst quot; y snd fst (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 22. Passo 6/9 f ◦ (fst fst ◦ (snd fst)) = f = {; % Regras aplic´veis: a w ◦ !a f swap = snd fst )7 h) ◦ f = g ◦ f h◦f (g ft quot;b fst ◦ (f g) = f , 08 u snd ◦ (f g) = g ◦ fst fst snd = id # fst t f ◦ id = f = id ◦ f quot; v snd fst Cancelamento-× = ! Instˆncia¸˜o da a ca /0/1/1/[] ◦r f regra fst ◦ (snd v fst) fst snd fs g (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 23. ´ Arvore resultante = quot; ◦u f # u f quot; w fst snd (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 24. Passo 7/9 f ◦ (fst snd) = f Regras aplic´veis: a = ? ? ? ? swap = snd fst ! {Ó h) ◦ f = g ◦ f h◦f (g ◦ f _ _ fst ◦ (f g ) = f , snd ◦ (f g) = g '5 fu fst snd = id f ◦ id = f = id ◦ f ! w fst snd Reflex˜o-× a Instˆncia¸˜o da a ca = /0/1/[] # regra r id fst snd # id fst u snd (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 25. ´ Arvore resultante = ! ◦u f ! fu id (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 26. Passo 8/9 f ◦ (fst snd) = f Regras aplic´veis: a = swap = snd fst ? ? ? ? h) ◦ f = g ◦ f h◦f (g ! {Ó fst ◦ (f g ) = f , snd ◦ (f g) = g ◦ f fst snd = id ! f ◦ id = f = id ◦ f fu id Natural-Id = Instˆncia¸˜o da a ca /0/[] ! regra ◦u f f ◦ id f ! fu id (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 27. ´ Arvore resultante = quot; u f f (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 28. Passo 9/9 Provado f ◦ swap ◦ swap = f (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 29. Sum´rio a 1 Contextualiza¸˜o ca 2 Representa¸˜o ca 3 Calculador 4 Trabalho futuro (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 30. Aspecto geral 1 Input 2 Regras aplic´veis a 3 Estado da prova (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 31. Input Introdu¸˜o da prova ca (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 32. Regras aplic´veis a Navega¸˜o ca PgUp / PgDn enter Instˆncia¸˜o da regra em 1 a ca Carregar regras (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 33. Regras aplic´veis a Navega¸˜o ca PgUp / PgDn enter Instˆncia¸˜o da regra em 1 a ca Carregar regras (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 34. Regras aplic´veis a Navega¸˜o ca PgUp / PgDn enter Instˆncia¸˜o da regra em 1 a ca Carregar regras (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 35. Regras aplic´veis a Navega¸˜o ca PgUp / PgDn enter Instˆncia¸˜o da regra em 1 a ca Carregar regras (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 36. Estado da prova Navega¸˜o ca up / down - n´ ıveis left / right - filhos backspace - undo Load / Save em XML Exporta¸˜o PDF ca (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 37. Estado da prova Navega¸˜o ca up / down - n´ ıveis left / right - filhos backspace - undo Load / Save em XML Exporta¸˜o PDF ca (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 38. Estado da prova Navega¸˜o ca up / down - n´ ıveis left / right - filhos backspace - undo Load / Save em XML Exporta¸˜o PDF ca (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 39. Estado da prova Navega¸˜o ca up / down - n´ ıveis left / right - filhos backspace - undo Load / Save em XML Exporta¸˜o PDF ca (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 40. Sum´rio a 1 Contextualiza¸˜o ca 2 Representa¸˜o ca 3 Calculador 4 Trabalho futuro (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 41. C´lculo sobre fun¸oes recursivas a c˜ O estado actual do programa j´ o permite, no entanto a temos que ter uma regra para cada tipo recurisvo Ficheiro de regras cataList g = g ◦ (id + id × cataList g ) ◦ outList anaList h = inList ◦ (id + id × cataList g ) ◦ h cataLTree g = g ◦ (id + id × cataLTree g × cataLTree g ) ◦ outLTree anaBTree h = inBTree ◦ (id + id × cataBTree g × cataBTree g ) ◦ h cataRoseTree g = g ◦ (id × map(cataRoseTree g )) ◦ outRoseTree Solu¸˜o: inferˆncia de tipos para ter apenas a defini¸˜o geral de ca e ca cata: Ficheiro de regras com inferˆncia de tipos e cataT g FT outT = g ◦ FT ◦ outT anaT h FT inT = inT ◦ FT ◦ h (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 42. C´lculo sobre fun¸oes recursivas a c˜ O estado actual do programa j´ o permite, no entanto a temos que ter uma regra para cada tipo recurisvo Ficheiro de regras cataList g = g ◦ (id + id × cataList g ) ◦ outList anaList h = inList ◦ (id + id × cataList g ) ◦ h cataLTree g = g ◦ (id + id × cataLTree g × cataLTree g ) ◦ outLTree anaBTree h = inBTree ◦ (id + id × cataBTree g × cataBTree g ) ◦ h cataRoseTree g = g ◦ (id × map(cataRoseTree g )) ◦ outRoseTree Solu¸˜o: inferˆncia de tipos para ter apenas a defini¸˜o geral de ca e ca cata: Ficheiro de regras com inferˆncia de tipos e cataT g FT outT = g ◦ FT ◦ outT anaT h FT inT = inT ◦ FT ◦ h (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 43. Inferˆncia de tipos e Algoritmo Damas-Milner round : R → N ⇔ roundR N Inferˆncia de tipos para h = f ◦ g ◦ round e (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 44. Inferˆncia de tipos e Algoritmo Damas-Milner round : R → N ⇔ roundR N Inferˆncia de tipos para h = f ◦ g ◦ round e (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 45. Inferˆncia de tipos e Algoritmo Damas-Milner round : R → N ⇔ roundR N Inferˆncia de tipos para h = f ◦ g ◦ round e ht7 = ftt2 ◦ gtt34 ◦ roundtt56 t8 1 ⇔ {Regra do ◦} (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 46. Inferˆncia de tipos e Algoritmo Damas-Milner round : R → N ⇔ roundR N Inferˆncia de tipos para h = f ◦ g ◦ round e ht7 = (ftt2 ◦ gtt34 ◦ roundtt56 )t2 t8 t5 1 ⇔ {t2 ∼ t8 , t5 ∼ t7 } (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 47. Inferˆncia de tipos e Algoritmo Damas-Milner round : R → N ⇔ roundR N Inferˆncia de tipos para h = f ◦ g ◦ round e ht5 = (ftt2 ◦ gtt34 ◦ roundtt56 )t2 t2 t5 1 ⇔ {t1 ∼ t4 , t3 ∼ t6 } (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 48. Inferˆncia de tipos e Algoritmo Damas-Milner round : R → N ⇔ roundR N Inferˆncia de tipos para h = f ◦ g ◦ round e ht5 = (ftt2 ◦ gtt31 ◦ roundtt53 )t2 t2 t5 1 ⇔ {t5 ∼ R, t3 ∼ N} (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 49. Inferˆncia de tipos e Algoritmo Damas-Milner round : R → N ⇔ roundR N Inferˆncia de tipos para h = f ◦ g ◦ round e hR = (ftt2 ◦ gN1 ◦ roundR )t2 t2 t N 1 R Conclus˜o: a h : R → t2 f : t1 → t2 g : N → t1 (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree
  • 50. Formul´rio para inferˆncia de tipos no c´lculo Pointfree a e a ftt2 gtt32 ftt2 gtt34 1 1 + g )t2 +t3 (f (f + g )t2 +t4 t1 t1 +t2 ftt2 gtt12 ftt2 gtt34 1 1 = × TRUE (f × g )t2 ×t4 t1 ×t2 n ftt2 gtt13 zttn+1 ftt2 gtt31 n ... 1 1 ◦ g )t2 ×t3 (f z)t2 t1 (f ◦ g ◦ . . . ◦ tn+1 . . . quest˜es? o FIM (Jo˜o a Ulisses) (Moura Costa) Calculador Pointfree