Curso de introducción a la programación con Haskell y Python
Mañana comenzará en en este blog un curso práctico de introducción a la programación con Haskell y Python.
Diariamente, se publicará un ejercicio con sus soluciones en Haskell y en Python. El orden de los ejercicios se corresponde con el de los temas del curso de Programación funcional con Haskell. Además, en cada ejercicio se comentarán las diferencias entre ambos lenguajes y se irá extendiendo la tabla de equivalencia entre Haskell y Python.
Las soluciones de los ejercicios con Haskell se irán añadiendo al repositorio Exercitium em GitHub. Están como un proyecto con Stack (en concreto, la LTS-18.24) de forma que se puede verificar los ejemplos con
stack test
Las soluciones de los ejercicios con Python se irán añadiendo al repositorio Exercitium-Python em GitHub. Están como un proyecto con Poetry que usa la versión 3.10 de Python. También se pueden verificar los ejemplos con
poetry run pytest
He intentado escribir soluciones en Python parecidas a la de conservando el estilo funcional. De todas formas, en los comentarios se pueden escribir definiciones alternativas en cualquiera de los lenguajes.
Los libros de Haskell en los que me he basado son
- Algorithms: A functional programming approach de F. Rabhi y G. Lapalme.
- Algorithm design with Haskell de E. Bird y J. Gibbons.
- An introduction to functional programming systems using Haskell de A.J.T. Davie.
- An introduction to functional programming through lambda calculus de G. Michaelson.
- ¡Aprende Haskell por el bien de todos! de M. Lipovača.
- Beautiful code, compelling evidence (Functional programming for information visualization) de J.R. Heard.
- Beginning Haskell (A project based approach). ~ A. Serrano.
- Categories and Haskell de J.W. Buurlage.
- Category theory applied to functional programming J.P. Villa.
- Computational semantics and type theory de J. van Eijck.
- Computational semantics with functional programming de J. van Eijck y C. Unger.
- Developing web applications with Haskell and Yesod de M. Snoyman.
- Discrete mathematics using a computer de J. O'Donnell, C. Hall y R. Page.
- Domain-specific languages of Mathematics de P. Jansson, C. Ionescu y J.P. Bernardy.
- Ejercicios de programación funcional con Haskell de J.A. Alonso y M.J. Hidalgo.
- Exámenes de programación funcional con Haskell de J.A. Alonso y als.
- Functional programming and graph algorithms de D.J. King.
- Get programming with Haskell de W. Kurt.
- Haskell cookbook de Y. Sajanikar.
- Haskell data analysis cookbook de N. Shukla.
- Haskell design patterns de R. Lemmer.
- Haskell financial data modeling and predictive analytics de P. Ryzhov.
- Haskell high performance programming de S. Thomasson.
- Haskell (Notes for professionals).
- Haskell programming from first principles de C. Allen y J. Moronuki.
- Haskell quick syntax reference de S.L. Nita y M. Mihailescu.
- Haskell tutorial and cookbook de M. Watson.
- Haskell (The craft of functional programming) de S. Thompson.
- Introducción a la programación funcional con Haskell de R. Bird.
- Introduction to computation Haskell, logic and automata de D. Sannella, M. Fourman, H. Peng y P. Wadler.
- Learn you a Haskell for great good! de M. Lipovaca y J. Brock.
- Learning Haskell data analysis de J. Church.
- Parallel and concurrent programming in Haskell. S. Marlow.
- Pearls of functional algorithm design de R. Bird.
- Piensa en Haskell de J.A. Alonso y M.J. Hidalgo.
- Practical Haskell (A real World guide to programming) de A. Serrano.
- Practical Web development with Haskell de E. Putrady.
- Practical concurrent Haskell (with big data applications) de S.L. Nita y M. Mihailescu.
- Programming in Haskell (2nd edition) de G. Hutton.
- Purely functional data structures de D. Okasaki.
- Real world Haskell de B. O'Sullivan, J. Goerzen y D. Stewart.
- Temas de programación funcional de J.A. Alonso.
- The Dao of functional programming de B. Milewski.
- The Haskell school of music (from signals to symphonies) de P. Hudak.
- The Haskell road to logic, maths and programming de K. Doets y J van Eijck.
- Thinking functionally with Haskell de R. Bird.
- Thinking with types de S. Maguire.
- Yet another Haskell tutorial de Hal Daume III et al.
Los libros de Python en los que me he basado son
- Advanced guide to Python 3 programming de J. Hunt.
- Algorithmic problem solving with Python de J.B. Schneider, S.L. Broschat y J. Dahmen.
- Aprenda a pensar como un programador con Python de A. Downey, J. Elkner y C. Meyers.
- Aprende a programar en Python como si estuvieras en el siglo XXI de J.J. Merelo.
- Artificial intelligence with Python de P. Joshi.
- Automate the boring stuff with Python de A. Sweigart.
- A beginners guide to Python 3 programming de J. Hunt.
- A concise introduction to programming in Python de M.J. Johnson.
- A functional start to computing with Python de T. Herman.
- A primer on scientific programming with Python de H.P. Langtangen.
- A programmer’s introduction to mathematics de J. Kun.
- A very basic introduction to scientific Python programming de H.P. Langtangen.
- Basic cheat sheet for Python de Swigartpdf
- Beginning Python (From novice to professional) de M.L. Hetland.
- Clean Python (Elegant coding in Python) de S. Kapil.
- Competitive programming in Python de C. Durr y J.L. Vie.
- Computational physics with Python de E. Ayars.
- Computational quantum mechanics de J. Izaac y J. Wang.
- Data science from scratch (First principles with Python) de J. Grus.
- Data structures and algorithms in Python de M.T. Goodrich, R. Tamassia y M.H.Goldwasser.
- Doing math with Python de A. Saha.
- Effective computation in physics de A. Scopatz y K.D. Huff.
- El lenguaje Python de D. Masip.
- Fluent Python de L. Ramalho.
- Functional Python programming de D.F. Lott.
- Functional programming in Python de D. Mertz.
- Fundamentals of Python (From first programs through data structures) de K.A. Lambert.
- Hacking secret ciphers with Python de A. Sweigart.
- Introducción a la programación con Python 3 de A. Marzal. I. Gracia y P. García.
- Introduction a l'algorithmique avec Python de P. Olivier.
- Introduction to Python for computational science and engineering de H. ~ Fangohr.
- Introduction to Python for econometrics, statistics and data analysis. ~ Sheppard-14.pdf
- Introduction to Python for science and engineering de D.J. Pine.
- Introduction to Python for scientists and engineers de S. Nagar.
- Introduction to computation and programming using Python de J.V. Guttag.
- Introduction to recursive programming de M. Rubio.
- Learning to program using Python de C. Jackson.
- Lectures on mathematical computing with Python de J. Gopalakrishnan.
- Mastering Python de R. van Hattem.
- Problem solving with algorithms and data structures using Python de B. Miller y D. Ranum.
- Programmation en Python pour les mathématiques de A. Casamayou P. Chauvin y G. Connan.
- Programming and mathematical thinking de A.M. Stavely.
- Programming for computations (A gentle introduction to numerical simulations with Python 3.6) de S. Linge y H.P. Langtangen.
- Programming with Python de T.R. Padmanabhan.
- Python 3 for absolute beginners de T. Hall y J-P Stacey.
- Python algorithms (Mastering basic algorithms in the Python language) de M.L. Lie.
- Python descriptors de J. Zimmerman.
- Python programming (An introduction to computer science) de J. Zelle.
- Python scientific lecture notes de V. Haenel, E. Gouillart y G. Varoquaux..
- Scipy Lecture Notes (One document to learn numerics, science, and data with Python) de G. Varoquaux et als.
- Serious Python de J. Danjou.
- The Python workbook (A brief introduction with exercises and solutions) de B. Stephenson.