SlideShare una empresa de Scribd logo
1 de 60
Un lenguaje funcional avanzado:  Haskell
Objetivos ,[object Object],[object Object]
Desarrollo ,[object Object],[object Object],[object Object],[object Object]
Desarrollo ,[object Object],[object Object],[object Object],[object Object]
Características principales ,[object Object],[object Object],[object Object],[object Object],[object Object],Introducción a Haskell
Características principales ,[object Object],[object Object],[object Object],[object Object],Introducción a Haskell
Características principales ,[object Object],[object Object],[object Object],Introducción a Haskell
Introducción a Haskell Importación/Exportación de módulos Definición de tipos y estructuras de datos Definición de funciones Module ProgHaskell
Introducción a Haskell Definición de tipos y estructuras de datos Definición de funciones Prelude.hs
Desarrollo ,[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],Nivel léxico Identificadores
[object Object],[object Object],[object Object],[object Object],[object Object],Nivel léxico Identificadores
Nivel léxico ,[object Object],[object Object],[object Object],[object Object],[object Object],Constructores de tipos Constructores de datos Variables de tipo Mayusc. Minusc. Identificadores
Nivel léxico Constructores de datos Nombres de función Mayusc. Minusc. ,[object Object],[object Object],[object Object],[object Object],[object Object],Variables
[object Object],[object Object],[object Object],[object Object],Nivel léxico Operadores
[object Object],[object Object],[object Object],[object Object],Nivel léxico Comentarios
[object Object],[object Object],[object Object],[object Object],Números Nivel léxico
Caracteres ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Nivel léxico
Cadenas ,[object Object],[object Object],[object Object],[object Object],Nivel léxico
Desarrollo ,[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Llamada a una función Expresiones ¡Paréntesis externos! ¡No hay ‘comas’!
[object Object],[object Object],[object Object],[object Object],Expresiones Llamada a una función
[object Object],[object Object],[object Object],[object Object],Expresiones Llamada a una función
Expresiones Utilización de operadores ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],Expresiones Utilización de operadores
[object Object],[object Object],[object Object],[object Object],Expresiones Utilización de operadores
[object Object],[object Object],[object Object],[object Object],Expresiones
[object Object],[object Object],Expresiones Condicionales
Expresiones Listas ,[object Object],[object Object],[object Object],[object Object],[object Object],(:)  es  asociativo  por la derecha
Expresiones Listas ,[object Object],[object Object],[object Object],[object Object],[object Object]
Expresiones Listas ,[object Object],[object Object],[object Object],[object Object]
Expresiones lambda ,[object Object], x 1  · · · x k  -> e ,[object Object],Expresiones
Expresiones lambda ,[object Object],[object Object],[object Object],[object Object],[object Object],Expresiones
Desarrollo ,[object Object],[object Object],[object Object],[object Object]
Tipos definidos por el usuario Declaraciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],Tipos definidos por el usuario Declaraciones
[object Object],[object Object],[object Object],[object Object],[object Object],Tipos definidos por el usuario Declaraciones
1 4 2 3 (B (L 1) (B (B (L 2) (L 3)) (L 4))) ,[object Object],Tipos definidos por el usuario Declaraciones
[object Object],[object Object],[object Object],[object Object],Tipos definidos por el usuario Declaraciones
Definición de funciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Declaraciones
Parámetros formales Definición de funciones ,[object Object],f  x 1  · · · x k  = r ,[object Object]
Definición de funciones ,[object Object],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) Parámetros formales
Definición de funciones ,[object Object],doble x  = x  +  x triple x  = 3  *  x Funciones primitivas Parámetros formales
Definición de funciones ,[object Object],doble x  = x+x triple x  = 3*x seisveces x =   doble   ( triple   x) Otras funciones de usuario Parámetros formales
Definición de funciones ,[object Object],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 Parámetros formales
Parámetros formales y guardas Definición de funciones ,[object Object],f  x 1  · · · x k   |  c = r donde  c  es una expresión booleana
Parámetros formales y guardas Definición de funciones ,[object Object],fact n   |  n==0 = 1   |  n>0  = n*fact (n-1) sign x  |  x<0  = neg   |  x==0 = cero   |  x>0  = pos
Parámetros formales y guardas Definición de funciones ,[object Object],Guardas fact n   |  n==0 = 1   |  n>0  = n*fact (n-1) sign x  |  x<0  = neg   |  x==0 = cero   |  x>0  = pos
Ajuste de patrones Definición de funciones ,[object Object],f  p 1  · · · p k   = r ,[object Object]
[object Object],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 Definición de funciones
[object Object],Patrones Patrones Ajuste de patrones Definición de funciones 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 Definición de funciones ,[object Object]
Ajuste de patrones Definición de funciones ,[object Object],S (S Cero) S x Cero S (S Cero) X { x  := S Cero}
Ajuste de patrones Definición de funciones El ajuste de patrones permite  clasificar  datos  y  explorar   /   recuperar  subestructuras de los mismos
Distinción de casos Definición de funciones ,[object Object],f  p 1  · · · p k   = case x of   q 1  -> e 1   ...   q n  -> e n ,[object Object]
Distinción de casos Definición de funciones ,[object Object],length   xs = case xs of   [ ] -> 0   (y:ys) -> 1+length ys
Cláusulas  where Definición de funciones ,[object Object],f  p 1  · · · p k   = e where l 1  = r 1 ... l n  = r n ,[object Object]
Definición de funciones ,[object Object],raicesEc2   a b c = ((-b+d)/a’,(-b-d)/a’) where  d = sqrt(b^2-4*a*c) a’ = 2*a Cláusulas  where
Bibliografía [Bir00]  R. Bird. Introducción a la Programación Funcional con Haskell. Prentice-Hall, Madrid, 2000. [Dav92]  A.J. Davie. An Introduction to Functional Programming Systems Using Haskell. Cambridge University Press, Cambridge, UK, 1992. [Pey03]  S. Peyton Jones, editor. Haskell 98: Language and Libraries. The Revised Report. Cambridge University Press, 2003. Página WWW de Haskell: http://www.haskell.org
: = 

Más contenido relacionado

La actualidad más candente

Cap5
Cap5Cap5
Cap5
CJAO
 
Estructura de Datos Arreglos
Estructura de Datos ArreglosEstructura de Datos Arreglos
Estructura de Datos Arreglos
guestc906c2
 
Fundamentos De Algoritmia
Fundamentos De AlgoritmiaFundamentos De Algoritmia
Fundamentos De Algoritmia
cckokyco
 

La actualidad más candente (19)

Tema 10: Evaluación perezosa en Haskell
Tema 10: Evaluación perezosa en HaskellTema 10: Evaluación perezosa en Haskell
Tema 10: Evaluación perezosa en Haskell
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10
 
Identificadores, variables y constantes
Identificadores, variables y constantesIdentificadores, variables y constantes
Identificadores, variables y constantes
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Vectores y Matrices
Vectores y MatricesVectores y Matrices
Vectores y Matrices
 
Tema 3: Tipos y clases en Haskell
Tema 3: Tipos y clases en HaskellTema 3: Tipos y clases en Haskell
Tema 3: Tipos y clases en Haskell
 
I1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en HaskellI1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en Haskell
 
Cap5
Cap5Cap5
Cap5
 
Estructura de Datos Arreglos
Estructura de Datos ArreglosEstructura de Datos Arreglos
Estructura de Datos Arreglos
 
Semana03 prog ii
Semana03 prog iiSemana03 prog ii
Semana03 prog ii
 
123507620 que-es-la-evaluacion-perezosa-docx
123507620 que-es-la-evaluacion-perezosa-docx123507620 que-es-la-evaluacion-perezosa-docx
123507620 que-es-la-evaluacion-perezosa-docx
 
Fundamentos De Algoritmia
Fundamentos De AlgoritmiaFundamentos De Algoritmia
Fundamentos De Algoritmia
 
Tipos de datos ok
Tipos de datos okTipos de datos ok
Tipos de datos ok
 
C curso intr
C curso intr C curso intr
C curso intr
 
Tema 1: Introducción a la programación funcional.
Tema 1: Introducción a la programación funcional.Tema 1: Introducción a la programación funcional.
Tema 1: Introducción a la programación funcional.
 
Arreglos
ArreglosArreglos
Arreglos
 
Arreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansArreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeans
 

Similar a Intro haskell

Analisis lexico 2
Analisis lexico 2Analisis lexico 2
Analisis lexico 2
perlallamas
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
starduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
starduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
starduslex
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
kevinwm17
 
Tipos de datos usados en lenguaje C
Tipos de datos usados en lenguaje CTipos de datos usados en lenguaje C
Tipos de datos usados en lenguaje C
efrenpedro92
 

Similar a Intro haskell (20)

Módulo 4 (sin estilo)
Módulo 4 (sin estilo)Módulo 4 (sin estilo)
Módulo 4 (sin estilo)
 
Analisis lexico 2
Analisis lexico 2Analisis lexico 2
Analisis lexico 2
 
Programacion matlab
Programacion matlabProgramacion matlab
Programacion matlab
 
Programacion logica
Programacion logicaProgramacion logica
Programacion logica
 
Módulo 4
Módulo 4Módulo 4
Módulo 4
 
Módulo 4
Módulo 4Módulo 4
Módulo 4
 
C ++
C ++C ++
C ++
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Tipos de Datos Abstractos.
Tipos de Datos Abstractos.Tipos de Datos Abstractos.
Tipos de Datos Abstractos.
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
 
Ambiente
 Ambiente Ambiente
Ambiente
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambiente de programacin en pascal
Ambiente de programacin en pascalAmbiente de programacin en pascal
Ambiente de programacin en pascal
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Lenguajes formales y teoría de autómatas I.pdf
Lenguajes formales y teoría de autómatas I.pdfLenguajes formales y teoría de autómatas I.pdf
Lenguajes formales y teoría de autómatas I.pdf
 
Descubriendo scala
Descubriendo scalaDescubriendo scala
Descubriendo scala
 
Tipos de datos usados en lenguaje C
Tipos de datos usados en lenguaje CTipos de datos usados en lenguaje C
Tipos de datos usados en lenguaje C
 

Último

ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
zulyvero07
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Francisco158360
 

Último (20)

SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptx
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 

Intro haskell

  • 1. Un lenguaje funcional avanzado: Haskell
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. Introducción a Haskell Importación/Exportación de módulos Definición de tipos y estructuras de datos Definición de funciones Module ProgHaskell
  • 9. Introducción a Haskell Definición de tipos y estructuras de datos Definición de funciones Prelude.hs
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54. Ajuste de patrones Definición de funciones El ajuste de patrones permite clasificar datos y explorar / recuperar subestructuras de los mismos
  • 55.
  • 56.
  • 57.
  • 58.
  • 59. Bibliografía [Bir00] R. Bird. Introducción a la Programación Funcional con Haskell. Prentice-Hall, Madrid, 2000. [Dav92] A.J. Davie. An Introduction to Functional Programming Systems Using Haskell. Cambridge University Press, Cambridge, UK, 1992. [Pey03] S. Peyton Jones, editor. Haskell 98: Language and Libraries. The Revised Report. Cambridge University Press, 2003. Página WWW de Haskell: http://www.haskell.org