36
Haskell Intro

Haskell - Intro

Embed Size (px)

DESCRIPTION

Haskell - Introducción

Citation preview

Page 1: Haskell - Intro

HaskellIntro

Page 2: 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

Page 3: Haskell - Intro

Lenguajes

Hay lenguajes funcionales, como Haskell, Clojure, Lisp.

Hay lenguajes imperativos que soportan programación funcional, como Javascript, Java, Python, PHP.

Page 4: Haskell - Intro

Instalación de Haskell

The Haskell Platformhttp://www.haskell.org

Page 5: Haskell - Intro

El lenguaje Haskell

The Haskell Reporthttps://www.haskell.org/onlinereport/haskell2010/

Page 6: Haskell - Intro

GHCIGlorious Haskell Compiler Interpreter$ ghci

Prelude> 1 + 1

Prelude> it

Prelude> :type 1

Prelude> :?

Prelude> :quit

Page 7: Haskell - Intro

Scripts

Es más cómodo escribir la definición de funciones en scripts.

Los scripts se guardan en archivos .hs

Page 8: Haskell - Intro

Flujo de trabajo con scripts

En un editor tener abierto myscript.hs

$ ghci

> :load myscript

> -- jugar

> :reload

Page 9: Haskell - Intro

Aplicación de funciones

f(a,b) se expresa: f a bf(a,b) + cd se expresa: f a b + c * df(g(x)) se expresa: f (g x)

Page 10: Haskell - Intro

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

Page 11: Haskell - Intro

Lógica

True

False

not a

a || b

a && b

(||) a b

(&&) a b

Page 12: Haskell - Intro

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

Page 13: Haskell - Intro

Comentarios

-- De una línea

{-

De múltiples líneas

-}

Page 14: Haskell - Intro

Listas

[]

[1,2,3,4,5]

[1..5]

Page 15: Haskell - Intro

Variables

Comienzan con minúscula

x: item

xs: lista de items

xss: lista de listas

Page 16: Haskell - Intro

Funciones

doble x = x + x

Page 17: Haskell - Intro

Funciones

suma [] = 0

suma (x:xs) = x + suma xs

Page 18: Haskell - Intro

Funciones

qsort [] = []

qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger

where

smaller = [a|a<-xs, a <= x]

larger = [a|a<-xs, a > x]

Page 19: Haskell - Intro

Listasalgunas operaciones

Page 20: Haskell - Intro

as ++ bs

1 2 3 4 5

1 2 3 4 5++

Page 21: Haskell - Intro

xs

1 2 3 4 5

Page 22: Haskell - Intro

length xs

1 2 3 4 5

5

Page 23: Haskell - Intro

head xs

1 2 3 4 5

Page 24: Haskell - Intro

tail xs

1 2 3 4 5

Page 25: Haskell - Intro

last xs

1 2 3 4 5

Page 26: Haskell - Intro

xs !! 0

1 2 3 4 5

20 1 3 4

Page 27: Haskell - Intro

xs !! 2

1 2 3 4 5

20 1 3 4

Page 28: Haskell - Intro

xs !! (length xs - 1)

1 2 3 4 5

20 1 3 4

Page 29: Haskell - Intro

take 1 xs

1 2 3 4 5

Page 30: Haskell - Intro

take 3 xs

1 2 3 4 5

Page 31: Haskell - Intro

drop 3 xs

1 2 3 4 5

Page 32: Haskell - Intro

drop (length xs - 1) xs

1 2 3 4 5

Page 33: Haskell - Intro

reverse xs

5 4 3 2 1

Page 34: Haskell - Intro

sum xs

1 2 3 4 5

1 + 2 + 3 + 4 + 5 = 15

Page 35: Haskell - Intro

product xs

1 2 3 4 5

1 * 2 * 3 * 4 * 5 = 120

Page 36: Haskell - Intro

Gracias@rulokoba