Haskell - Intro

Preview:

DESCRIPTION

Haskell - Introducción

Citation preview

HaskellIntro

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 Platformhttp://www.haskell.org

El lenguaje Haskell

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

GHCIGlorious 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 bf(a,b) + cd se expresa: f a b + c * df(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]

Listasalgunas 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

20 1 3 4

xs !! 2

1 2 3 4 5

20 1 3 4

xs !! (length xs - 1)

1 2 3 4 5

20 1 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

Recommended