PDF de programación - Programando con Racket 5

Imágen de pdf Programando con Racket 5

Programando con Racket 5gráfica de visualizaciones

Publicado el 12 de Abril del 2018
2.554 visualizaciones desde el 12 de Abril del 2018
2,2 MB
201 paginas
Creado hace 13a (27/07/2010)
Departamento de Electrónica e Informática,

Universidad Centroamericana

José Simeón Cañas

Programando con Racket 5

por Eduardo NAVAS

versión 1.0
2010.07.21

Este libro fue desarrollado únicamente con software libre. Entre las herramientas usadas,
se encuentran: LATEX, LYX, GNU/Linux, GNOME, KDE, KmPlot, GIMP, Python, etc.

CC-BY-NC-SA
Este es un libro libre con la licencia
Creative Commons Attribution-Noncommercial-Share Alike 3.0.
Los detalles pueden ser consultados en:
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es

La versión digital y el material adicional puede ser descargado de:
www.aliamondano-eo.wikidot.com/racket-5
http://dei.uca.edu.sv/publicaciones/

ISBN: 978-99923-73-61-3

Editado y preparado desde el
Departamento de Electrónica e Infomática de la
Universidad Centroamericana José Simeón Cañas,
El Salvador, Centroamérica.

Dedico esta obra al egoísmo

Prólogo

Este libro evolucionó a partir del material preparado para las clases de la materia Progra-
mación Funcional, impartida para la Carrera de Licenciatura en Ciencias de la Computación
de la Universidad Centroamericana José Simeón Cañas.

Después de un año de trabajo, este libro incluye un recorrido por las características básicas
del lenguaje Racket, en su versión 5.

Racket 5 es la nueva versión de PLT Scheme, un sistema de programación de larga tradición
en el aprendizaje de la programación de computadoras, a través del paradigma funcional,
basándose en el lenguaje Scheme.

Realmente no existe, formalmente hablando, un lenguaje llamado Scheme, sino que se le
llama así a una familia de lenguajes de programación funcionales (véase el capítulo 1).

En este libro, se discute especícamente el dialecto conocido como Racket (anteriormente
PLT Scheme), uno de los más difundidos. Si se quiere un estudio más purista sobre Scheme,
revise el estándar R5RS que también es soportado por el intérprete de Racket.

Los temas abordados en la Parte I incluyen una introducción a la programación funcional,
una sencilla guía de instalación de Racket y una introducción a la interacción con Racket y
DrRacket.

En la Parte II se introduce el lenguaje Racket en sí, a través de sus elementos básicos y los
bloques lambda, característicos de la programación funcional.

La Parte III describe los demás elementos del lenguaje y contiene múltiples ejercicios para
que el lector practique sus nuevos conocimientos.

Finalmente, la Parte IV muestra las capacidades de Racket para implementar programas
con interfaces graácas de usuario.

Y por último, la Parte V incluye un anexo describiendo las diferencias entre la versión 5 de
Racket y la serie 4.x de PLT Scheme.

7

8

Índice general

I.

Introducción a la Programación Funcional con Racket

1. Programación Funcional

1.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Características
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Lenguajes de Programación Funcionales . . . . . . . . . . . . . . . . . . . .
1.4. Ejemplos de código de lenguajes funcionales . . . . . . . . . . . . . . . . . .

2.

Instalación de Racket
2.1.
2.2.

. . . . . . . . . . . . . . . . . . . . . . .
Instalación con el instalador ocial
Instalación desde repositorios . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2. Fedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Expresiones Racket - Notación Preja

3.1. Notación para la sintaxis de Racket . . . . . . . . . . . . . . . . . . . . . . .
3.2. Notación preja de Racket . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.

Interacción con Racket
4.1. Ejecución interactiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
4.2. Ejecución no interactiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .

4.1.1. Deniciones e interacciones con DrRacket
4.1.2. Ejecución interactiva con Racket

4.2.1. Parámetros de la línea de comandos

5. Compilación de programas Racket

5.1. Lo básico sobre compilación . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Compilación con múltiples módulos . . . . . . . . . . . . . . . . . . . . . . .

II.

Introducción al lenguaje Racket

6. Elementos básicos

6.1. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

19
19
20
20
21

23
23
24
24
25

27
27
27

29
29
30
30
31
31

33
33
33

35

37
37

9

Índice general

6.2.1.

Identicadores

6.2. Deniciones Globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3. Llamadas a funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. Bloques condicionales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.1. if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.2. and y or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.3. cond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.4. case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5. Bloques de código secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6. Más sobre llamadas a funciones . . . . . . . . . . . . . . . . . . . . . . . . .

7. Funciones anónimas - Bloques lambda

7.1. Bloques lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Funciones/Expresiones que producen funciones
. . . . . . . . . . . . . . . .

8. Asignación local

8.1. define . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2. let . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3. let* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

III. Elementos del lenguaje

9. Listas e Iteración

9.1. Listas

9.2.

9.3.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.1.1. Lista vacía o nula . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.1.2. Funciones básicas sobre listas . . . . . . . . . . . . . . . . . . . . . .
Iteración automática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.1. map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.2. andmap y ormap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.3. filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.4. for-each . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.5. Versiones generales de las funciones de iteración . . . . . . . . . . . .
Iteración manual
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.3.1. Aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4.1. Convención de impresión . . . . . . . . . . . . . . . . . . . . . . . . .
9.4.2. Notación inja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.4. Pares y listas

10.Recursión

10.1. Recursión por Posposición de trabajo . . . . . . . . . . . . . . . . . . . . . .
10.2. Recursión de Cola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

37
38
39
39
39
40
41
42
43
43

45
45
46

49
49
50
50

51

53
53
54
54
56
56
56
57
58
59
59
60
61
62
62

67
67
67

Índice general

11.Tipos de dato integrados del lenguaje

11.1. Booleanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2. Números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.1. Clasicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clasicación por Exactitud . . . . . . . . . . . . . . . . . . . . . . .
Clasicación por Conjuntos . . . . . . . . . . . . . . . . . . . . . . .
11.2.2. Otras bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.3. Comparaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.4. Constantes especiales . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3. Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4. Cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.1. Cadenas mutables
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.2. Comparación entre cadenas . . . . . . . . . . . . . . . . . . . . . . .
11.4.3. Otras funciones de cadena . . . . . . . . . . . . . . . . . . . . . . . .
11.5. Bytes y Cadenas de Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.6. Símbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.7. Palabras clave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.8. Pares y listas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.9. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.10.Tablas Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.11.Void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12.Expresiones y Deniciones Avanzadas

12.1. La función apply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2. Bloques lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2.1. Funciones con cualquier número de parámetros . . . . . . . . . . . .
12.2.2. Funciones con un mínimo número de parámetros
. . . . . . . . . . .
12.2.3. Funciones con parámetros opcionales . . . . . . . . . . . . . . . . . .
12.2.4. Funciones con parámetros con nombre . . . . . . . . . . . . . . . . .
12.2.5. Funciones con aridad múltiple . . . . . . . . . . . . . . . . . . . . . .
12.2.6. Consultando la aridad de las funciones . . . . . . . . . . . . . . . . .
  • Links de descarga
http://lwp-l.com/pdf10365

Comentarios de: Programando con Racket 5 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad