SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Haskell 
Intro
Functional Programming 
Estilo de programación donde lo principal es 
aplicar funciones (en el sentido matemático) 
sobre expresiones para obtener otras 
expresiones. 
f (x) y
Lenguajes 
Hay lenguajes funcionales, como Haskell, 
Clojure, Lisp. 
Hay lenguajes imperativos que soportan 
programación funcional, como Javascript, Java, 
Python, PHP.
Instalación de Haskell 
The Haskell Platform 
http://www.haskell.org
El lenguaje Haskell 
The Haskell Report 
https://www.haskell. 
org/onlinereport/haskell2010/
GHCI 
Glorious Haskell Compiler Interpreter 
$ ghci 
Prelude> 1 + 1 
Prelude> it 
Prelude> :type 1 
Prelude> :? 
Prelude> :quit
Scripts 
Es más cómodo escribir la definición de 
funciones en scripts. 
Los scripts se guardan en archivos .hs
Flujo de trabajo con scripts 
En un editor tener abierto myscript.hs 
$ ghci 
> :load myscript 
> -- jugar 
> :reload
Aplicación de funciones 
f(a,b) se expresa: f a b 
f(a,b) + cd se expresa: f a b + c * d 
f(g(x)) se expresa: f (g x)
Aritmética 
a + b 
a - b 
a * b 
a `div` b 
a `mod` b 
a / b 
a ^ b 
(+) a b 
(-) a b 
(*) a b 
div a b 
mod a b 
(/) a b 
(^) a b
Lógica 
True 
False 
not a 
a || b 
a && b 
(||) a b 
(&&) a b
Booleanos 
a == b 
a /= b 
a < b 
a > b 
a <= b 
a >= b 
(==) a b 
(/=) a b 
(<) a b 
(>) a b 
(<=) a b 
(>=) a b
Comentarios 
-- De una línea 
{- 
De múltiples líneas 
-}
Listas 
[] 
[1,2,3,4,5] 
[1..5]
Variables 
Comienzan con minúscula 
x: item 
xs: lista de items 
xss: lista de listas
Funciones 
doble x = x + x
Funciones 
suma [] = 0 
suma (x:xs) = x + suma xs
Funciones 
qsort [] = [] 
qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger 
where 
smaller = [a|a<-xs, a <= x] 
larger = [a|a<-xs, a > x]
Listas 
algunas operaciones
as ++ bs 
1 2 ++ 3 4 5 
1 2 3 4 5
xs 
1 2 3 4 5
length xs 
1 2 3 4 5 
5
head xs 
1 2 3 4 5
tail xs 
1 2 3 4 5
last xs 
1 2 3 4 5
xs !! 0 
1 2 3 4 5 
0 1 2 3 4
xs !! 2 
1 2 3 4 5 
0 1 2 3 4
xs !! (length xs - 1) 
1 2 3 4 5 
0 1 2 3 4
take 1 xs 
1 2 3 4 5
take 3 xs 
1 2 3 4 5
drop 3 xs 
1 2 3 4 5
drop (length xs - 1) xs 
1 2 3 4 5
reverse xs 
5 4 3 2 1
sum xs 
1 2 3 4 5 
1 + 2 + 3 + 4 + 5 = 15
product xs 
1 2 3 4 5 
1 * 2 * 3 * 4 * 5 = 120
Gracias 
@rulokoba

Más contenido relacionado

La actualidad más candente (20)

Listas Simples Enlazadas
Listas Simples EnlazadasListas Simples Enlazadas
Listas Simples Enlazadas
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completo
 
Programacion logica
Programacion logicaProgramacion logica
Programacion logica
 
Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Listas encadenadas
Listas encadenadasListas encadenadas
Listas encadenadas
 
String
StringString
String
 
Ejemplo herencia21 10
Ejemplo herencia21 10Ejemplo herencia21 10
Ejemplo herencia21 10
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Colas
ColasColas
Colas
 
PILAS
PILASPILAS
PILAS
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Transparencias3
Transparencias3Transparencias3
Transparencias3
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 

Destacado

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 HaskellJosé A. Alonso
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskellAgustin Ramos
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Javaquesada_diego
 
Kit media affichage lausanne
Kit media affichage lausanneKit media affichage lausanne
Kit media affichage lausanneEsteban74160
 
Delwende web (2010)
Delwende web (2010)Delwende web (2010)
Delwende web (2010)katiapgm
 
TropicalHomeGarden
TropicalHomeGardenTropicalHomeGarden
TropicalHomeGarden4grabs
 
Janssen - Les Séniors et le VIH - Novembre 2014
Janssen - Les Séniors et le VIH - Novembre 2014Janssen - Les Séniors et le VIH - Novembre 2014
Janssen - Les Séniors et le VIH - Novembre 2014OpinionWay
 
Inmobiliaria Piruli. Tecnicas de Decisión Multicriterio
Inmobiliaria Piruli.  Tecnicas de Decisión MulticriterioInmobiliaria Piruli.  Tecnicas de Decisión Multicriterio
Inmobiliaria Piruli. Tecnicas de Decisión MulticriterioRaquel Lorente
 
La Question de l'Eco Tilder/LCI OpinionWay 10 juin 2015
La Question de l'Eco Tilder/LCI OpinionWay 10 juin  2015La Question de l'Eco Tilder/LCI OpinionWay 10 juin  2015
La Question de l'Eco Tilder/LCI OpinionWay 10 juin 2015OpinionWay
 
Dirección de arte lobos y ovejas
Dirección de arte lobos y ovejasDirección de arte lobos y ovejas
Dirección de arte lobos y ovejasSonia Quintero
 
Importante!!!! Alguien Quiere Chatear Contigo
Importante!!!! Alguien Quiere Chatear ContigoImportante!!!! Alguien Quiere Chatear Contigo
Importante!!!! Alguien Quiere Chatear ContigoJoseluis58
 
La Question de l'Eco Tilder/LCI OpinionWay 20 février 2014
La Question de l'Eco Tilder/LCI OpinionWay 20 février 2014La Question de l'Eco Tilder/LCI OpinionWay 20 février 2014
La Question de l'Eco Tilder/LCI OpinionWay 20 février 2014OpinionWay
 
Sujet Bac Liban 2015 Mathématiques
Sujet Bac Liban 2015 MathématiquesSujet Bac Liban 2015 Mathématiques
Sujet Bac Liban 2015 MathématiquesFabrice Lallemand
 
AGEFA - Bilan et perspectives 2015 - par OpinionWay - Décembre 2014
AGEFA - Bilan et perspectives 2015 - par OpinionWay - Décembre 2014AGEFA - Bilan et perspectives 2015 - par OpinionWay - Décembre 2014
AGEFA - Bilan et perspectives 2015 - par OpinionWay - Décembre 2014OpinionWay
 

Destacado (20)

Intro haskell
Intro haskellIntro haskell
Intro 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
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
Kit media affichage lausanne
Kit media affichage lausanneKit media affichage lausanne
Kit media affichage lausanne
 
Delwende web (2010)
Delwende web (2010)Delwende web (2010)
Delwende web (2010)
 
1 sexeaubureau-musical-
1 sexeaubureau-musical-1 sexeaubureau-musical-
1 sexeaubureau-musical-
 
Gerencia
GerenciaGerencia
Gerencia
 
Diaporama espagne 2009 partie 6
Diaporama espagne 2009 partie 6Diaporama espagne 2009 partie 6
Diaporama espagne 2009 partie 6
 
TropicalHomeGarden
TropicalHomeGardenTropicalHomeGarden
TropicalHomeGarden
 
Janssen - Les Séniors et le VIH - Novembre 2014
Janssen - Les Séniors et le VIH - Novembre 2014Janssen - Les Séniors et le VIH - Novembre 2014
Janssen - Les Séniors et le VIH - Novembre 2014
 
Inmobiliaria Piruli. Tecnicas de Decisión Multicriterio
Inmobiliaria Piruli.  Tecnicas de Decisión MulticriterioInmobiliaria Piruli.  Tecnicas de Decisión Multicriterio
Inmobiliaria Piruli. Tecnicas de Decisión Multicriterio
 
La Question de l'Eco Tilder/LCI OpinionWay 10 juin 2015
La Question de l'Eco Tilder/LCI OpinionWay 10 juin  2015La Question de l'Eco Tilder/LCI OpinionWay 10 juin  2015
La Question de l'Eco Tilder/LCI OpinionWay 10 juin 2015
 
Dirección de arte lobos y ovejas
Dirección de arte lobos y ovejasDirección de arte lobos y ovejas
Dirección de arte lobos y ovejas
 
Trabajo de frances (1)..
Trabajo de frances (1)..Trabajo de frances (1)..
Trabajo de frances (1)..
 
Evidnce part 2
Evidnce part 2Evidnce part 2
Evidnce part 2
 
Importante!!!! Alguien Quiere Chatear Contigo
Importante!!!! Alguien Quiere Chatear ContigoImportante!!!! Alguien Quiere Chatear Contigo
Importante!!!! Alguien Quiere Chatear Contigo
 
La Question de l'Eco Tilder/LCI OpinionWay 20 février 2014
La Question de l'Eco Tilder/LCI OpinionWay 20 février 2014La Question de l'Eco Tilder/LCI OpinionWay 20 février 2014
La Question de l'Eco Tilder/LCI OpinionWay 20 février 2014
 
Sujet Bac Liban 2015 Mathématiques
Sujet Bac Liban 2015 MathématiquesSujet Bac Liban 2015 Mathématiques
Sujet Bac Liban 2015 Mathématiques
 
AGEFA - Bilan et perspectives 2015 - par OpinionWay - Décembre 2014
AGEFA - Bilan et perspectives 2015 - par OpinionWay - Décembre 2014AGEFA - Bilan et perspectives 2015 - par OpinionWay - Décembre 2014
AGEFA - Bilan et perspectives 2015 - par OpinionWay - Décembre 2014
 

Similar a Haskell - Intro

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.José A. Alonso
 
Descubriendo scala
Descubriendo scalaDescubriendo scala
Descubriendo scalanluaces
 
Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkSoftware Guru
 
Programacion_en_Python_parte_2.pptx
Programacion_en_Python_parte_2.pptxProgramacion_en_Python_parte_2.pptx
Programacion_en_Python_parte_2.pptxAlejandro958027
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Germán Ferrari
 
Kit de supervivencia para Java 8 : como prepararse para Java 9
Kit de supervivencia para Java 8 :  como prepararse para Java 9Kit de supervivencia para Java 8 :  como prepararse para Java 9
Kit de supervivencia para Java 8 : como prepararse para Java 9Eudris Cabrera
 
Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell José A. Alonso
 
Conceptos básicos de un lenguaje de programación
Conceptos básicos de un lenguaje de programaciónConceptos básicos de un lenguaje de programación
Conceptos básicos de un lenguaje de programaciónEdison López Díaz
 

Similar a Haskell - Intro (20)

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.
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
Descubriendo scala
Descubriendo scalaDescubriendo scala
Descubriendo scala
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
 
Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache Spark
 
Introducción a dr racket
Introducción a dr racketIntroducción a dr racket
Introducción a dr racket
 
Pf con scala
Pf con scalaPf con scala
Pf con scala
 
Programacion_en_Python_parte_2.pptx
Programacion_en_Python_parte_2.pptxProgramacion_en_Python_parte_2.pptx
Programacion_en_Python_parte_2.pptx
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03
 
Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlab
 
Kit de supervivencia para Java 8 : como prepararse para Java 9
Kit de supervivencia para Java 8 :  como prepararse para Java 9Kit de supervivencia para Java 8 :  como prepararse para Java 9
Kit de supervivencia para Java 8 : como prepararse para Java 9
 
02 introduccion a python
02 introduccion a python02 introduccion a python
02 introduccion a python
 
Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell
 
4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala
 
Bt haskell-1
Bt haskell-1Bt haskell-1
Bt haskell-1
 
04 j flex
04 j flex04 j flex
04 j flex
 
Conceptos básicos de un lenguaje de programación
Conceptos básicos de un lenguaje de programaciónConceptos básicos de un lenguaje de programación
Conceptos básicos de un lenguaje de programación
 
Matlab
MatlabMatlab
Matlab
 
Los scripts de linux
Los scripts de linuxLos scripts de linux
Los scripts de linux
 

Más de Antonio Kobashikawa Carrasco (20)

Tiempos verbales en ingles
Tiempos verbales en inglesTiempos verbales en ingles
Tiempos verbales en ingles
 
Mobile first, ¿Cual es la idea?
Mobile first, ¿Cual es la idea?Mobile first, ¿Cual es la idea?
Mobile first, ¿Cual es la idea?
 
Docker WordPress
Docker WordPressDocker WordPress
Docker WordPress
 
Aprender herramientas
Aprender herramientasAprender herramientas
Aprender herramientas
 
Ahorrando un lapiz
Ahorrando un lapizAhorrando un lapiz
Ahorrando un lapiz
 
Como aprendemos
Como aprendemosComo aprendemos
Como aprendemos
 
Pomodoro
PomodoroPomodoro
Pomodoro
 
De HTML a Express
De HTML a ExpressDe HTML a Express
De HTML a Express
 
Socket.io - Intro
Socket.io - IntroSocket.io - Intro
Socket.io - Intro
 
Sobre información
Sobre informaciónSobre información
Sobre información
 
Teoría de contextos
Teoría de contextosTeoría de contextos
Teoría de contextos
 
Web i
Web iWeb i
Web i
 
Conciencia
ConcienciaConciencia
Conciencia
 
Dos trenes
Dos trenesDos trenes
Dos trenes
 
La suma de dos numeros
La suma de dos numerosLa suma de dos numeros
La suma de dos numeros
 
Crowd Solving
Crowd Solving Crowd Solving
Crowd Solving
 
Cómo actúa la gente - Para entender la conducta
Cómo actúa la gente - Para entender la conductaCómo actúa la gente - Para entender la conducta
Cómo actúa la gente - Para entender la conducta
 
Something to Result
Something to ResultSomething to Result
Something to Result
 
Señales
SeñalesSeñales
Señales
 
Modelo OSI
Modelo OSIModelo OSI
Modelo OSI
 

Haskell - Intro