intro haskell

Download Intro haskell

Post on 03-Jul-2015

832 views

Category:

Education

1 download

Embed Size (px)

DESCRIPTION

una introduccion al lenguaje gaskell...

TRANSCRIPT

  • 1. Un lenguaje funcional avanzado:Haskell

2. Objetivos

  • Introducir la sintaxis bsica deHaskell
  • Aprender a utilizar el intrpreteHugspara ejecutar programas escritos en Haskell

3. Desarrollo

  • Introduccin a Haskell
  • Nivel lxico
  • Expresiones
  • Declaraciones

4. Desarrollo

  • Introduccin a Haskell
  • Nivel lxico
  • Expresiones
  • Declaraciones

5. Caractersticas principales

  • Permite al usuario definir suspropiostipos y estructuras de datos
  • Dispone de los tipos predefinidos usuales ( booleanos ,enteros ,caracteres ,cadenas , ) con las operaciones predefinidas habituales
  • Soporta distintos niveles depolimorfismo :
    • Polimorfismo paramtrico
    • Polimorfismo ad-hoc (sobrecarga)

Introduccin a Haskell 6. Caractersticas principales

  • Un programa es un conjunto de definiciones de funcin realizadas medianteecuaciones condicionales
  • Pueden emplearse expresionesletywhereas como las reglas de layout
  • Funciones deorden superior
  • La evaluacin de expresiones es perezosa (lazy)

Introduccin a Haskell 7. Caractersticas principales

  • Los programas pueden organizarse enmoduloso libreras
  • Los programas Haskell suelen llevar la extensin hs .
  • El mduloPrelude.hscontiene definiciones de tipos y funciones que pueden utilizarse de forma inmediata en cualquier programa

Introduccin a Haskell 8. Introduccin a Haskell Importacin/Exportacin de mdulos Definicin de tipos y estructuras de datos Definicin de funciones Module ProgHaskell 9. Introduccin a Haskell Definicin de tipos y estructuras de datos Definicin de funciones Prelude.hs 10. Desarrollo

  • Introduccin a Haskell
  • Nivel lxico
  • Expresiones
  • Declaraciones

11.

  • UnidentificadorHaskell consta de una letra seguida por cero o ms letras, dgitos, subrayados y comillas simples.
  • Los identificadores soncase-sensitive(el uso de minsculas o maysculas importa)

Nivel lxico Identificadores 12.

  • Como en todos los lenguajes, hay palabras reservadas:
  • case, data, deriving, do, else, if, import,let, module, of, then, type, where
  • La letra inicial del identificador distingue familias de identificadores: empiezan por
    • Maysculalostiposyconstructoresde datos
    • Minsculalos nombres defuncinyvariables

Nivel lxico Identificadores 13. Nivel lxico

  • Ejemplo:Bool ,Int ,Char ,String (predef)
      • data Color =Red|Green|Blue
      • data Laboral =Lu|Ma|Mi|Ju|Vi
      • data TreeInt =L Int |B TreeInt TreeInt
      • data Tree t =L t|B( Tree t ) ( Tree t )

Constructores de tipos Constructores de datos Variables de tipo Mayusc. Minusc. Identificadores 14. Nivel lxico Constructores de datos Nombres de funcin Mayusc. Minusc.

  • Ejemplo:
  • fact n |n == 0=1
  • |n > 0 =n * fact( n - 1 )
  • length [] =0
  • length ( x : xs )=1 + length xs

Variables 15.

  • Se pueden especificaroperadores : cadenas de smbolos escogidos entre
  • !, #, $, %, &, *, +, -, ., /, , ?, @, , :,
  • Ejemplo: +!+, e
    • Lasvariables x 1 , ..., x k son distintas entre s y las nicas que aparecen en la expresine

    Expresiones 33. Expresiones lambda

    • Ejemplo
    • x y -> x+y
    • x -> 2*x
    • x -> True
    • m n -> B (L m) (L n)

    Expresiones 34. Desarrollo

    • Introduccin a Haskell
    • Nivel lxico
    • Expresiones
    • Declaraciones

    35. Tipos definidos por el usuario Declaraciones

    • Los tipos de usuario se definen junto con losvaloresque stos contienen
    • Ejemplos:
        • data Color= Red | Green | Blue
        • data Laboral = Lu | Ma | Mi | Ju | Vi
        • data TreeInt = L Int | B TreeInt TreeInt
        • data Tree t= L t | B (Tree t) (Tree t)

    36.

    • Losvaloresse obtienen considerando la definicin de tipo como unagramtica :
      • Los constructores de datos son smbolos terminales
      • Los constructores de tipo son smbolos no terminales
    • Los valores del tipo son los trminos del lenguaje generado por la gramtica

    Tipos definidos por el usuario Declaraciones 37.

    • Ejemplo:
      • Int := 0 | 1 | 2 | 3 | | -1 | -2 | -3 |
      • TreeInt := L Int | B TreeInt TreeInt
      • Valores de este tipo son:
      • L 1,L -10,B (L 1) (L 10),B (B (L 1) (L1)) (L -1)

    Tipos definidos por el usuario Declaraciones 38. 1 4 2 3 (B (L 1) (B (B (L 2) (L 3)) (L 4)))

    • Ejemplo devalordel tipoTreeInt

    Tipos definidos por el usuario Declaraciones 39.

    • Las siguientes expresiones:
      • L (1+1)
      • B (B (L 1) (L (length ab))) (L (fact 2))
    • son del tipo TreeInt, peronoson valores (contienen smbolos no constructores)

    Tipos definidos por el usuario Declaraciones 40. Definicin de funciones

    • En los lenguajes funcionales, lo normal es definir las funciones medianteecuacionesempleando (y combinando) distintas tcnicas:
      • parmetros formales
      • guardas
      • ajuste de patrones
      • distincin de casos
      • clusulaswhere

    Declaraciones 41. Parmetros formales Definicin de funciones

    • Una funcinf se describe mediante ecuaciones de la forma:

    fx 1 x k= r

    • Lasvariables x 1 , ..., x k son distintas entre s y las nicas que aparecen en la parte derechar

    42. Definicin de funciones

    • Ejemplos:

    doble x = x+x triple x = 3*x seisveces x= doble (triple x) fact n= if n==0 then 1 else n*fact (n-1) Parmetros formales 43. Definicin de funciones

    • Ejemplos:

    doble x= x+x triple x= 3*x Funciones primitivas Parmetros formales 44. Definicin de funciones

    • Ejemplos:

    doble x= x+x triple x= 3*x seisveces x = doble ( triple x) Otras funciones de usuario Parmetros formales 45. Definicin de funciones

    • Ejemplos:

    doble x= x+x triple x= 3*x seisveces x = doble (triple x) fact n= if n==0 then 1 else n* fact (n-1) Recursividad Parmetros formales 46. Parmetros formales y guardas Definicin de funciones

    • Una funcinf se describe mediante ecuaciones de la forma:

    fx 1 x k |c = r dondeces una expresin booleana 47. Parmetros formales y guardas Definicin de funciones

    • Ejemplos:

    fact n |n==0 = 1 |n>0= n*fact (n-1) sign x|x0= pos 48. Parmetros formales y guardas Definicin de funciones

    • Ejemplos:

    Guardas fact n |n==0 = 1 |n>0= n*fact (n-1) sign x|x0= pos 49. Ajuste de patrones Definicin de funciones

    • Una funcinf se describe mediante ecuaciones de la forma:

    fp 1 p k = r

    • Lospatrones p 1 , ..., p k son trminos constituidos porconstructores de datosyvariables

    50.

    • Ejemplos:

    length []= 0 length (x:xs) = 1+length xs data Nat = Cero | S Nat first Cero_= [] first (S n) (x:xs)= x:(first n xs)Ajuste de patrones Definicin de funciones 51.

    • Ejemplos:

    Patrones Patrones Ajuste de patrones Definicin de funciones length[] = 0 length(x:xs)= 1+length xs data Nat = Cero | S Nat firstCero _ = [] first(S n) (x:xs) = x:(first n xs) 52. Ajuste de patrones Definicin de funciones

    • Una expresine se ajusta aun patrnp( pattern matching ) siepuede verse como unaconcrecindep(dando ciertos valores a las variables libres dep )

    53. Ajuste de patrones Definicin de funciones

    • Ejemplo: la expresinS (S Cero)se ajusta al patrnS xperonoal patrnCero

    S (S Cero) S x Cero S (S Cero) X { x:= S Cero} 54. Ajuste de patrones Definicin de funciones El ajuste de patrones permiteclasificardatosyexplorar / recuperarsubestructuras de los mismos 55. Distincin de casos Definicin de funciones

    • Una funcinf se describe mediante ecuaciones de la forma:

    fp 1 p k = case x of q 1-> e 1 ... q n-> e n

    • Dondep 1 p k,q 1 q n son patrones,xes una variable ye 1 e n expresiones

    56. Distincin de casos Definicin de funciones

    • Ejemplo:

    length xs = case xs of [ ] -> 0 (y:ys) -> 1+length ys 57. Clusulaswhere Definicin de funciones

    • Una funcinf se describe mediante ecuaciones de la forma:

    fp 1 p k = e where l 1= r 1 ... l n= r n