Files
awesome-awesomeness/html/functionalprogramming.html
2025-07-18 22:22:32 +02:00

331 lines
16 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h2 id="awesome-functional-programming-awesome">Awesome Functional
Programming <a href="https://github.com/sindresorhus/awesome"><img
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
alt="Awesome" /></a></h2>
<p>Based on the <a
href="https://github.com/sindresorhus/awesome/">Awesome</a> project</p>
<h2 id="what-is-this-about">What is this about?</h2>
<p>On the last decade, functional programming has gained a new found
power due to its declarative characteristics which, some would say, are
very effective for parallel computing and for the whole usage of <a
href="https://en.wikipedia.org/wiki/Moore%27s_law">Moores Law</a>.</p>
<p>This repo gathers some material on Functional Programming such as
blog posts, papers, videos, tools, etc. and also aims to clarify some of
the theoretical subjects behind it.</p>
<p>Want to contribute? Please refer to <a
href="https://github.com/lucasviola/awesome-functional-programming/blob/master/contributing.md">this</a>
first.</p>
<h2 id="table-of-contents">Table of Contents</h2>
<ul>
<li><a href="#blog-posts">Blog Posts</a></li>
<li><a href="#papers">Papers</a></li>
<li><a href="#wikis">Wikis</a></li>
<li><a href="#books">Books</a></li>
<li><a href="#communities">Communities</a></li>
<li><a
href="#discussions-quora-stack-overflow-reddit-etc">Discussions</a></li>
<li><a href="#videos">Videos</a></li>
<li><a href="#lectures">Lectures</a></li>
<li><a href="#tools">Tools</a></li>
<li><a href="#repos">Repos</a></li>
<li><a href="#people">People</a></li>
</ul>
<h3 id="blog-posts">Blog posts</h3>
<ul>
<li><a
href="http://www.akitaonrails.com/2015/10/28/personal-thoughts-on-the-current-functional-programming-bandwagon">Personal
thoughts on the current functional programming bandwagon</a> Despite the
name, this post actually clarifies some baisc concepts on Functional
Programming, explains some of the History of FP and the implementation
of FPs features on imperative languages and talks about all the fuss on
declarative programming and why it has become so popular in the last few
years.</li>
<li><a
href="http://robotlolita.me/2014/03/20/a-monad-in-practicality-controlling-time.html">A
Monad in Practicality - Controlling Time</a></li>
<li><a
href="http://robotlolita.me/2013/12/08/a-monad-in-practicality-first-class-failures.html">A
Monad in Practicality - First Class Failures</a></li>
<li><a
href="http://www.haskellforall.com/2014/10/how-to-desugar-haskell-code.html">How
to desugar Haskell Code</a></li>
<li><a
href="http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html">Functors,
Applicatives, And Monads In Pictures</a></li>
<li><a href="http://www.stephendiehl.com/posts/monads.html">Monads Made
Difficult</a></li>
<li><a
href="https://medium.com/@lettier/your-easy-guide-to-monads-applicatives-functors-862048d61610">Your
easy guide to Monads, Applicatives, &amp; Functors</a></li>
<li><a href="https://freecontent.manning.com/async-streams-in-c/">Async
Streams in C#</a></li>
<li><a
href="https://doordash.engineering/2022/03/22/how-to-leverage-functional-programming-in-kotlin-to-write-better-cleaner-code/">How
to leverage functional programming in Kotlin to write better, cleaner
code</a></li>
</ul>
<h3 id="papers">Papers</h3>
<ul>
<li><a href="http://lambda-the-ultimate.org/node/1180">Tradeoffs between
Unique Types and Monads</a></li>
<li><a
href="http://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/start.htm">The
implementation of Functional Programming Languages</a> - A paper by
Simon Peyton Jones</li>
<li><a
href="http://research.microsoft.com/en-us/um/people/simonpj/papers/fd-chr/esop04.pdf">Sound
and Decidable Type Inference for Functional Dependencies</a> - Another
very famous paper on Type Inference by the main creator of Haskell and
GHC</li>
<li><a
href="http://research.microsoft.com/en-us/um/people/simonpj/papers/meta-haskell/meta-haskell.pdf">Template
Meta-Programming for Haskell</a> - Paper about generating code at
compile-time in Haskell</li>
<li><a
href="http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf">Why
Functional Programming Matters</a></li>
<li><a
href="http://isabelle.in.tum.de/~haftmann/pdf/from_hol_to_haskell_haftmann.pdf">From
Higher-Order Logic to Haskell: There and Back Again</a></li>
<li><a
href="http://es.cs.uni-kl.de/events/TPHOLs-2007/proceedings/B-178.pdf">Translating
Haskell to Isabelle</a></li>
</ul>
<h3 id="wikis">Wikis</h3>
<ul>
<li><a href="http://ncatlab.org/nlab/show/HomePage">nLab</a> - A
wiki-lab with articles, discussion and tools from the point of view of
category theory, which is the main math behind FP.</li>
<li><a
href="https://en.wikibooks.org/wiki/Haskell/Category_theory">Haskell/Category
Theory</a> - A good overview on Category Theory applied to Haskell from
Wikibooks.</li>
<li><a href="https://wiki.haskell.org/Haskell">Haskell Wiki</a></li>
</ul>
<h3 id="books">Books</h3>
<ul>
<li><a href="http://learnyouahaskell.com/">Learn you a Haskell</a> -
Book, but you can read it online for free as well. Very beginner
friendly.</li>
<li><a
href="https://books.google.com.br/books?id=I9E_CgAAQBAJ&amp;pg=PR13#v=onepage&amp;q&amp;f=false">The
Little Prover</a> - Talks about a theorem prover called JBob for writing
proofs in LISP.</li>
<li><a href="http://isabelle.in.tum.de/doc/tutorial.pdf">Isabelle/HOL -
A Proof Assistant for Higher-Order Logic</a> - A Book on implementing
logical formalisms in Isabelle/HOL.</li>
<li><a href="http://www.ccs.neu.edu/home/matthias/BTML/">The Little
MLer</a> - A book focused on teaching types, recursive thinking and
other important subjects in Standard ML.</li>
<li><a
href="http://catalogue.pearsoned.co.uk/educator/product/Introduction-to-Programming-using-SML/9780201398205.page">Introduction
to Programming using SML</a> - Introduces you to programming design in a
very mathematical way.</li>
<li><a href="http://www.htdp.org/">How to Design Programs</a> / <a
href="http://www.ccs.neu.edu/home/matthias/HtDP2e/">Second
Edition</a></li>
<li><a
href="http://www.amazon.com/Introduction-Functional-Programming-International-Computing/dp/0134841891">Introduction
to Functional Programming</a></li>
<li><a href="https://www.manning.com/books/haskell-in-depth">Haskell in
Depth</a> - the perfect second book on Haskell which dives into examples
and application scenarios designed to teach how Haskell works and how to
apply it correctly.</li>
<li><a href="https://www.manning.com/books/grokking-simplicity">Grokking
Simplicity: Taming complex software with functional thinking</a> -
Teaches functional programming from first principles using real-world
scenarios.</li>
<li><a
href="https://www.manning.com/books/functional-programming-in-scala-second-edition">Functional
Programming in Scala, Second Edition</a> - International bestseller
revised with new exercises, annotations, and full coverage of Scala
3.</li>
<li><a
href="https://www.manning.com/books/functional-programming-in-c-sharp-second-edition">Functional
Programming in C#, Second Edition</a> - Real world examples and
practical techniques for functional programming in C#.</li>
<li><a
href="https://www.manning.com/books/grokking-functional-programming">Grokking
Functional Programming</a> - Introduction to functional
programming.</li>
<li><a
href="https://www.manning.com/books/functional-programming-in-kotlin">Functional
Programming in Kotlin</a> - Master techniques and concepts of functional
programming to deliver safer, simpler, and more effective Kotlin
code.</li>
<li><a
href="https://www.manning.com/books/functional-design-and-architecture">Functional
Design and Architecture</a> - Design patterns and architectures for
building production quality applications using functional programming,
with examples in Haskell and other FP languages.</li>
<li><a href="https://www.manning.com/books/haskell-bookcamp">Haskell
Bookcamp</a> - In this book, youll get practical experience writing
Haskell code and applying functional programming to actual development
challenges.</li>
<li><a
href="https://www.perlego.com/book/800653/mastering-functional-programming-functional-techniques-for-sequential-and-parallel-programming-with-scala-pdf">Mastering
Functional Programming</a> - If you are from an imperative and OOP
background, this book will guide you through the world of functional
programming, irrespective of which programming language you use.</li>
<li><a href="https://www.manning.com/books/jax-in-action">Jax in
Action</a> - A book about The JAX numerical computing library.</li>
<li><a
href="https://www.manning.com/books/learn-powershell-scripting-in-a-month-of-lunches-second-edition">Learn
PowerShell Scritping in a Month of Lunches</a> - Automate complex tasks
and processes with PowerShell scripts.</li>
<li><a href="https://www.manning.com/books/f-sharp-in-action">F# in
Action</a> - Book about practical F# development skills needed to create
professional applications.</li>
<li><a
href="https://www.manning.com/books/elixir-in-action-third-edition">Elixir
in Action, Third Edition</a> - Fully updated to Elixir 1.14, this
authoritative bestseller reveals how Elixir tackles problems of
scalability, fault tolerance, and high availability.</li>
</ul>
<h3 id="communities">Communities</h3>
<ul>
<li><a href="http://lambda-the-ultimate.org/">Lambda the Ultimate</a> -
Community focused on discussing researches, papers and hot topic on
academia. Very high tech discussion level.</li>
<li><a href="https://www.fpcomplete.com/">FP Complete</a> - Community
focused on helping companies and students on learning and implementing
Functional Programming in Haskell. Hosters of one of the most famous
Haskell learning centers: <a
href="https://www.schoolofhaskell.com/school">School of Haskell</a></li>
<li><a href="http://www.haskellers.com/">Haskellers</a> - The meeting
point for Haskell Programmers</li>
<li><a href="http://elixir-lang.moscow/">ElixirLangMoscow</a> - Russian
Elixir community</li>
</ul>
<h3 id="discussions-quora-stack-overflow-reddit-etc">Discussions (Quora,
Stack Overflow, Reddit, etc)</h3>
<ul>
<li><a
href="https://www.quora.com/Why-dont-more-programmers-use-Haskell">Why
dont more programmers use Haskell</a></li>
<li><a
href="http://lambda-the-ultimate.org/classic/message1532.html">Hidden
complexities of tail-call/tail-recursion optimization</a></li>
</ul>
<h3 id="videos">Videos</h3>
<ul>
<li><a href="https://www.youtube.com/watch?v=ZhuHCtR3xq8">Dont fear the
Monad</a> - Explanation on one of the most obscure topics of Functional
Programming by Microsoft researcher Brian Beckman.</li>
<li><a href="https://www.youtube.com/watch?v=iSmkqocn0oQ">Haskell is
useless</a> - Simon Peyton Jones being just too humble about his
creation.</li>
<li><a href="https://www.youtube.com/watch?v=XxzzJiXHOJs">Brian Beckman:
The Zen of Stateless State</a></li>
<li><a href="https://www.youtube.com/watch?v=z0N1aZ6SnBk">Erik Meijer:
Functional Programming</a></li>
<li><a href="https://www.youtube.com/watch?v=Mw_Jnn_Y5iA">Scala Monads:
Declutter Your Code With Monadic Design</a></li>
<li><a href="https://www.youtube.com/watch?v=9SBR_SnrEiI">Philip Wadler
and Erik Meijer: On Programming Language Theory and Practice</a></li>
<li><a
href="https://www.manning.com/livevideo/kotlin-for-android-and-java-developers">Kotlin
for Android &amp; Java Developers</a> - LiveVideo course about Kotlin:
functional programming, object orientation and building an Android app
in Kotlin.</li>
<li><a href="https://www.youtube.com/watch?v=KW9U6HMKEgk">Do we really
need OOD and FDD?</a> - Functional Declarative Design (FDD) opposed to
Object-Oriented Design (OOD</li>
<li><a
href="https://www.youtube.com/playlist?list=PLuPevXgCPUIMbCxBEnc1dNwboH6e2ImQo">Functional
Programming with TypeScript</a> - Discover functional programming with
Typescript and create a library like fp-ts alongside Sahand Javid in
this beginner-friendly YouTube playlist.</li>
</ul>
<h3 id="lectures">Lectures</h3>
<ul>
<li><a
href="https://www.youtube.com/playlist?list=PLTA0Ta9Qyspa5Nayx0VCHj5AHQJqp1clD">C9
Lectures: Dr. Erik Meijer - Functional Programming Fundamentals</a> -
Series of Lectures from one of the creators of Haskell</li>
<li><a
href="https://www.youtube.com/watch?v=6COvD8oynmI&amp;list=RD6COvD8oynmI#t=0">Adventure
with types in Haskell - Simon Peyton Jones</a> - Lectures about Haskells
strong Type System by Simon Peyton Jones.</li>
<li><a href="https://www.youtube.com/watch?v=YScIPA8RbVE">The Algebra of
Algebraic Data Types</a> - Very good explanation on the relationship
between math and Algebraic Data Types, which is the Type System of some
very common FP Languages such as Haskell and ML.</li>
</ul>
<h3 id="platforms">Platforms</h3>
<ul>
<li>[Paqmind.com] Guides and challenges to learn and improve in
programming. All content is CS and FP oriented.</li>
</ul>
<h3 id="tools">Tools</h3>
<ul>
<li><a
href="https://www.cl.cam.ac.uk/research/hvg/Isabelle/">Isabelle/HOL</a>
- Generic proof assistant based on Higher Order Logic</li>
</ul>
<h3 id="repos">Repos</h3>
<ul>
<li><p><a href="https://github.com/idris-hackers/idris-koans">Idris
Koans</a> - Project for teaching Idris. A General Purpose Functional
Programming with Dependent Types</p></li>
<li><p><a
href="https://github.com/timoxley/functional-javascript-workshop">Functional
Javascript Workshop</a> - A functional Javascript workshop.</p></li>
<li><p><a href="https://github.com/the-little-prover/j-bob">J-Bob</a> -
The proof assistant from the book
<code>The Little Prover</code></p></li>
<li><p><a
href="https://github.com/olehkuchuk/haskell-must-watch">Haskell Must
Watch</a> - A list of videos, talks and courses on Haskell.</p></li>
<li><p><a href="http://www.it.dtu.dk/introSML/">Intro SML</a> - Code,
corrections and info on the book:
<code>Introduction to Programming using SML</code></p></li>
<li><p><a
href="https://github.com/busypeoples/functional-programming-javascript">Functional
Programming In JavaScript</a> - List of functional programming resources
in JavaScript.</p></li>
<li><p><a
href="https://github.com/hemanth/functional-programming-jargon">Functional
Programming Jargon</a> - Project for providing a glossary for FP, and
make learning FP easier.</p></li>
<li><p><a href="https://github.com/bow-swift/bow">Bow</a> - Companion
library for Typed Functional Programming in Swift.</p></li>
<li><p><a
href="https://github.com/lettier/parsing-with-haskell-parser-combinators">Parsing
With Haskell Parser Combinators</a> - A step-by-step guide to parsing
using Haskell parser combinators.</p></li>
<li><p><a
href="https://github.com/imteekay/functional-programming-learning-path.git">Functional
Programming Learning Path</a> - A Learning Path for Functional
Programming ### People</p></li>
<li><p><a
href="http://research.microsoft.com/en-us/people/simonpj/">Simon Peyton
Jones</a> - One of the creators of the Haskell Language and the Glasgow
Haskell Compiler. Microsoft Researcher.</p></li>
<li><p><a href="http://homepages.inf.ed.ac.uk/wadler/">Philip Wadler</a>
- Professor of Theoretical Computer Science at the University of
Edinburgh, author of the famous paper Propositions as Types. One of the
main people behind Java Generics Types.</p></li>
<li><p><a href="http://www.ccs.neu.edu/home/matthias/">Matthias
Felleisen</a> - Author of many books such as How to Design Programs, and
The Little Schemer.</p></li>
<li><p><a href="https://www.linkedin.com/pub/erik-meijer/0/5ba/924">Erik
Meijer</a> - Former software architect for Microsoft, Functional
Programming researcher, gives lectures on FP, Software Design and
Reactive programming.</p></li>
<li><p><a href="https://www.linkedin.com/in/brianbeckman">Brian
Beckman</a> - Former Microsoft Researcher, actual Software Engineer at
Amazon. Contributed to implementing FP features to inumerous Microsoft
technologies such as C#, LINQ and F#</p></li>
</ul>
<h3 id="license">License</h3>
<p><a href="https://creativecommons.org/publicdomain/zero/1.0/"><img
src="https://i.creativecommons.org/p/zero/1.0/88x31.png"
alt="CC0" /></a></p>
<p>To the extent possible under law, <a
href="http://lucasviola.github.io">Lucas Viola</a> has waived all
copyright and related or neighboring rights to this work.</p>
<p><a
href="https://github.com/lucasviola/awesome-functional-programming">functionalprogramming.md
Github</a></p>