Leanpub Header

Skip to main content

PureScript mediante ejemplos

Programación funcional para la Web

Aprende programación funcional para la web resolviendo problemas prácticos usando el lenguaje de programación PureScript. "PureScript mediante ejemplos" proporcionará motivos para usar técnicas de programación funcional como asociaciones, pliegues, clases de tipos y mónadas, aplicándolas a problemas del mundo real.

Free With Membership

This book is a translation into Spanish of PureScript by Example which was originally written in English

With Membership

Free!

$10.00

You pay

$10.00

Authors earn

$0.00

Cause gets

$8.00
$

...Or Buy With Credits!

You can get credits monthly with a Reader Membership
PDF
EPUB
WEB
217
Readers
About

About

About the Book

PureScript es un pequeño lenguaje de programación fuertemente tipado con un sistema de tipos expresivo, escrito en (e inspirado por) Haskell, que compila a JavaScript.

La programación funcional en JavaScript está ganando popularidad recientemente, pero el desarrollo a gran escala está obstaculizado por la ausencia de un entorno disciplinado en el que escribir código. PureScript pretende resolver este problema trayendo la potencia de la programación funcional fuertemente tipada al mundo del desarrollo JavaScript.

Este libro te mostrará cómo empezar a desarrollar en el lenguaje de programación PureScript, desde lo más básico (establecer un entorno de desarrollo) hasta lo más avanzado.

Cada capítulo estará motivado por un problema particular, y en el curso de la resolución de ese problema se presentarán nuevas herramientas y técnicas de programación funcional. Aquí hay algunos ejemplos de los problemas que se resolverán en este libro:

- Transformar estructuras de datos con asociaciones y pliegues.

- Validación de campos de formulario usando funtores aplicativos.

- Verificación de código con QuickCheck.

- Usar el API Canvas.

- Implementación de lenguajes específicos del dominio.

- Trabajar con el DOM.

- Interoperabilidad con JavaScript.

- Tratar con el infierno de las retrollamadas (callbacks).

Share this book

License

Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
This book is a translation into Spanish of PureScript by Example which was originally written in English

Author

About the Authors

Jorge Acereda

Phil Freeman

I am a developer living in Los Angeles, CA. I work principally in Scala, Haskell and TypeScript.

I am the original developer of the PureScript programming language and compiler, and I am currently working on the PureScript by Example book.

Contents

Table of Contents

Introducción

  1. JavaScript funcional
  2. Tipos e inferencia de tipos
  3. Programación web políglota
  4. Prerrequisitos
  5. Sobre ti
  6. Cómo leer este libro
  7. Consiguiendo ayuda
  8. Acerca del autor
  9. Acerca de la traducción
  10. Agradecimientos

Empezando

  1. Objetivos del capítulo
  2. Introducción
  3. Instalando PureScript
  4. Instalando las herramientas
  5. ¡Hola, PureScript!
  6. Compilando para el navegador
  7. Quitando código no usado
  8. Compilando módulos CommonJS
  9. Seguimiento de dependencias con Bower
  10. Calculando diagonales
  11. Probando el código usando el modo interactivo
  12. Ejercicios
  13. Conclusión

Funciones y registros (records)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Tipos simples
  4. Tipos cuantificados
  5. Notas sobre la sangría (indentation)
  6. Definiendo nuestros tipos
  7. Constructores de tipo (type constructors) y familias (kinds)
  8. Mostrando entradas de la agenda
  9. Prueba temprano, prueba a menudo
  10. Creando agendas
  11. Funciones currificadas (curried functions)
  12. Consultando la agenda
  13. Aplicación de funciones infija
  14. Composición de funciones
  15. Prueba, prueba, prueba…
  16. Ejercicios
  17. Conclusión

Recursividad, asociaciones (maps) y pliegues (folds)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Introducción
  4. Recursividad sobre arrays
  5. Ejercicios
  6. Asociaciones (maps)
  7. Operadores infijos
  8. Filtrando arrays
  9. Ejercicios
  10. Aplanando arrays
  11. Arrays por comprensión (array comprehensions)
  12. Notación ‘do’ (do notation)
  13. Guardas (guards)
  14. Ejercicios
  15. Pliegues (folds)
  16. Recursividad final (tail recursion)
  17. Acumuladores (accumulators)
  18. Prefiere pliegues a recursividad explícita
  19. Ejercicios
  20. Un sistema de ficheros virtual
  21. Listando todos los ficheros
  22. Ejercicios
  23. Conclusión

Ajuste de patrones (pattern matching)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Ajuste de patrones simple
  4. Patrones simples
  5. Guardas
  6. Ejercicios
  7. Patrones de array (array patterns)
  8. Patrones de registro (record patterns) y polimorfismo de fila (row polymorphism)
  9. Patrones anidados (nested patterns)
  10. Patrones nombrados (named patterns)
  11. Ejercicios
  12. Expresiones “case” (case expressions)
  13. Fallos de ajuste de patrones (pattern match failures) y funciones parciales (partial functions)
  14. Tipos de datos algebraicos (algebraic data types)
  15. Usando ADTs
  16. Doble sentido en registros (record puns)
  17. Ejercicios
  18. Newtypes
  19. Una biblioteca para gráficos vectoriales
  20. Calculando rectángulos de delimitación
  21. Ejercicios
  22. Conclusión

Clases de tipos (type classes)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Ejercicios
  4. Clases de tipos comunes
  5. Ejercicios
  6. Anotaciones de tipo (type annotations)
  7. Instancias superpuestas (overlapping instances)
  8. Dependencias de instancia (instance dependencies)
  9. Ejercicios
  10. Clases de tipos de varios parámetros (multi parameter type classes)
  11. Dependencias funcionales (functional dependencies)
  12. Clases de tipos nularias (nullary type classes)
  13. Superclases (superclasses)
  14. Ejercicios
  15. Una clase de tipos para funciones resumen
  16. Ejercicios
  17. Conclusión

Validación aplicativa (applicative validation)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Generalizando la aplicación de funciones
  4. Elevando funciones arbitrarias
  5. La clase de tipos Applicative
  6. Intuición para Applicative
  7. Más efectos
  8. Combinando efectos
  9. Ejercicios
  10. Validación aplicativa
  11. Validadores con expresiones regulares (regular expression validators)
  12. Ejercicios
  13. Funtores transitables (traversable functors)
  14. Ejercicios
  15. Funtores aplicativos para paralelismo
  16. Conclusión

La mónada Eff

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. La clase de tipos mónada
  4. Leyes de la mónada
  5. Plegando con mónadas
  6. Mónadas y aplicativos
  7. Ejercicios
  8. Efectos nativos (native effects)
  9. Efectos secundarios y pureza
  10. La mónada Eff
  11. Efectos extensibles (extensible effects)
  12. Intercalando efectos
  13. La familia de Eff
  14. Objetos y filas
  15. Efectos de grano fino (fine-grained effects)
  16. Gestores (handlers) y acciones (actions)
  17. Estado mutable
  18. Ejercicios
  19. Efectos DOM
  20. Una interfaz de usuario para la agenda
  21. Ejercicios
  22. Conclusión

Gráficos con Canvas

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Formas simples
  4. Haciendo uso del polimorfismo de fila
  5. Ejercicios
  6. Dibujando círculos aleatorios
  7. Transformaciones
  8. Preservando el contexto
  9. Estado mutable global
  10. Ejemplos
  11. Sistemas-L
  12. Ejercicios
  13. Conclusión

Interfaz para funciones externas (foreign function interface)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Una advertencia
  4. Llamando a PureScript desde JavaScript
  5. Entendiendo la generación de nombres
  6. Representación de datos en tiempo de ejecución (runtime data representation)
  7. Representando ADTs
  8. Representando tipos cuantificados
  9. Representando tipos restringidos
  10. Ejercicios
  11. Usando código JavaScript desde PureScript
  12. Envolviendo valores JavaScript
  13. Definiendo tipos externos
  14. Funciones de múltiples argumentos
  15. Representando efectos secundarios
  16. Definiendo nuevos efectos
  17. Ejercicios
  18. Trabajando con datos no tipados
  19. Gestionando valores nulos e indefinidos
  20. Serialización genérica de JSON
  21. Ejercicios
  22. Conclusión

Aventuras monádicas

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Cómo jugar
  4. La mónada State
  5. Ejercicios
  6. La mónada Reader
  7. Ejercicios
  8. La mónada Writer
  9. Ejercicios
  10. Transformadores de mónada (monad transformers)
  11. El transformador de mónada ExceptT
  12. Pilas de transformadores de mónada (monad transformer stacks)
  13. Ejercicios
  14. ¡Clases de tipos al rescate!
  15. Alternativas
  16. Mónadas por comprensión
  17. Retroceso (backtracking)
  18. Ejercicios
  19. La mónada RWS
  20. Implementando la lógica del juego
  21. Ejecutando el cálculo
  22. Ejercicios
  23. Gestionando opciones de línea de comandos
  24. Ejercicios
  25. Conclusión

El infierno de retrollamadas (callback hell)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. El problema
  4. La mónada de continuación
  5. Ejercicios
  6. Poniendo ExceptT a trabajar
  7. Ejercicios
  8. Un cliente HTTP
  9. Ejercicios
  10. Cálculos paralelos
  11. Ejercicios
  12. Conclusión

Verificación generativa (generative testing)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Escribiendo propiedades
  4. Mejorando los mensajes de error
  5. Ejercicios
  6. Verificando código polimórfico
  7. Ejercicios
  8. Generando datos arbitrarios
  9. Ejercicios
  10. Probando funciones de orden mayor
  11. Escribiendo instancias de Coarbitrary
  12. Verificando sin efectos secundarios
  13. Ejercicios
  14. Conclusión

Lenguajes específicos del dominio (domain-specific languages)

  1. Objetivos del capítulo
  2. Preparación del proyecto
  3. Un tipo de datos HTML
  4. Constructores inteligentes (smart constructors)
  5. Ejercicios
  6. Tipos fantasma (phantom types)
  7. Ejercicios
  8. La mónada libre (free monad)
  9. Interpretando la mónada
  10. Ejercicios
  11. Extendiendo el lenguaje
  12. Ejercicios
  13. Conclusión

Get the free sample chapters

Click the buttons to get the free sample in PDF or EPUB, or read the sample online here

Causes

Causes Supported

JOVESOLIDES (Jóvenes hacia la Solidaridad y Desarrollo)

JOVESOLIDES (Jóvenes hacia la Solidaridad y Desarrollo) JOVESOLIDES

Sumando ideas, transformamos el mundo

http://www.redjovesolides.org
La Red Jovesolides trabaja en los ámbitos de la cooperación y el desarrollo, sensibilización y voluntariado y la inclusión social.
La Red Jovesolides es un movimiento solidario de entidades que trabajan para la juventud desde Latinamérica, España y Marruecos para consolidar procesos de participación comunitaria y liderazgo juvenil, primando valores sociales desde la formación, orientación, emprendimiento e innovación como ejes de cambio.

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

Earn $8 on a $10 Purchase, and $16 on a $20 Purchase

We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub