teaching-fp - Techniques, advice, and anecdotes about how to teach Functional Programming

  •        6

I am by no means an expert in teaching this material! However, most current materials are "okay" at best. There seems to be an increase in people interested in FP, but many get scared off at the word "functor" or unfamiliar syntax (ie: not from the C-family).




Related Projects

learn-fp - learn-by-doing course/tutorial for functional programming on scala

  •    Scala

This course/tutorial was created with purpose to better understand functional programming idioms using Scala language. It covers type classes, monoids, functors, applicatives, monads, traversable/foldable, monad transformers, free monad. Material is structured as set of stub/unimplemented functions/classes and tests for them. Your objective is to make all unit tests green. It is learn-by-doing course. NICTA course was a great and interesting challenge for me to do in Haskell. I think Scala community will benefit from the similar course.

Idris-dev - A Dependently Typed Functional Programming Language

  •    Haskell

Idris (http://idris-lang.org/) is a general-purpose functional programming language with dependent types. This repository represents the latest development version of the language, and may contain bugs that are being actively worked on. For those who wish to use a more stable version of Idris please consider installing the latest version that has been released on Hackage. Installation instructions for various platforms can be found on the Idris Wiki.

arrow - Functional companion to Kotlin's Standard Library

  •    Kotlin

Λrrow is a library for Typed Functional Programming in Kotlin. Arrow aims to provide a lingua franca of interfaces and abstractions across Kotlin libraries. For this, it includes the most popular data types, type classes and abstractions such as Option, Try, Either, IO, Functor, Applicative, Monad to empower users to write pure FP apps and libraries built atop higher order abstractions.

awesomo - An extensive list of interesting open source projects written in С, C++, Clojure, Lisp, Elixir, Erlang, Elm, Golang, Haskell, JavaScript, Lua, OCaml, Python, R, Ruby, Rust, Scala etc

  •    Rust

A.W.E.S.O.M. O is an extensive list of interesting open source projects written in various languages. If you are interested in Open Source and are considering to join the community of Open Source developers, then here you might find a project that will suit you.

functional-programming-jargon - Jargon from the functional programming world in simple terms!

  •    Javascript

Functional programming (FP) provides many advantages, and its popularity has been increasing as a result. However, each programming paradigm comes with its own unique jargon and FP is no exception. By providing a glossary, we hope to make learning FP easier. The number of arguments a function takes. From words like unary, binary, ternary, etc. This word has the distinction of being composed of two suffixes, "-ary" and "-ity." Addition, for example, takes two arguments, and so it is defined as a binary function or a function with an arity of two. Such a function may sometimes be called "dyadic" by people who prefer Greek roots to Latin. Likewise, a function that takes a variable number of arguments is called "variadic," whereas a binary function must be given two and only two arguments, currying and partial application notwithstanding (see below).

plt - Programming Language Theory

  •    CSS

Finding a path to enlightenment in Programming Language Theory can be a tough one, particularly for programming practitioners who didn't learn it at school. This resource is here to help. Please feel free to ping me or send pull requests if you have ideas for improvement. Note that I've attempted to order the books in order of most "tackleable". So the idea is to read books from top to bottom. As always, it depends on your background and inclinations. It would be nice to provide multiple paths through this material for folks with different backgrounds and even folks with different goals. However, for now, it is what it is.

fp-course - Functional Programming Course

  •    Haskell

The course is structured according to a linear progression and uses the Haskell programming language to learn programming concepts pertaining to functional programming. Exercises are annotated with a comment containing the word "Exercise." The existing code compiles, however answers have been replaced with a call to the Haskell error function and so the code will throw an exception if it is run. Some exercises contain tips, which are annotated with a preceding "Tip:". It is not necessary to adhere to tips. Tips are provided for potential guidance, which may be discarded if you prefer a different path to a solution.

Functional-Light-JS - A book about functional programming in JavaScript. @FLJSBook on twitter.

  •    Javascript

This book explores the core principles of functional programming (FP) as they are applied to JavaScript. But what makes this book different is that we approach these principles without drowning in all the heavy terminology. We look at a subset of FP foundational concepts that I call "Functional-Light Programming" (FLP) and apply it to JavaScript.Note: Despite the word "Light" in the title, I do not consider or recommend this book as a "beginner", "easy", or "intro" book on the topic. This book is rigorous and full of gritty detail; it expects a solid foundation of JS knowledge before diving in. "Light" means limited in scope; instead of being more broad, this book goes much deeper into each topic than you typically find in other FP-JavaScript books.

credo - A static code analysis tool for the Elixir language with a focus on code consistency and teaching

  •    Elixir

Credo is a static code analysis tool for the Elixir language with a focus on teaching and code consistency. It implements its own style guide.

gap - Main development repository for GAP - Groups, Algorithms, Programming, a System for Computational Discrete Algebra

  •    GAP

GAP is a system for computational discrete algebra, with particular emphasis on computational group theory. GAP provides a programming language, a library of thousands of functions implementing algebraic algorithms written in the GAP language as well as large data libraries of algebraic objects. For a more detailed overview, see https://www.gap-system.org/Overview/overview.html. For a description of the mathematical capabilities, see https://www.gap-system.org/Overview/Capabilities/capabilities.html. GAP is used in research and teaching for studying groups and their representations, rings, vector spaces, algebras, combinatorial structures, and more. The system, including source, is distributed freely. You can study and easily modify or extend it for your special use.

stanford-cs240h - Course materials for Stanford CS240h, "Functional Systems in Haskell"

  •    Haskell

These are the course materials for the Stanford Computer Science class CS240h, Functional Systems in Haskell, which we are teaching for the first time during the Fall term of 2011.

category-theory-programmers - Notes on category theory in the context of (functional) programming


This document contains notes on category theory in the context of (functional) programming. Originally they were lecture notes for a seminar hosted at Centrum Wiskunde & Informatica, the national research centre for mathematics and computer science in the Netherlands. The main reason for compiling these notes is to provide a way to gain familiarity with concepts of category theory (and other branches of mathematics) that apply in a broad sense to the field of functional programming. The notes are written in Markdown, and pandoc is used to generate the document. Running make inside the doc directory should result in an (updated) pdf, granted that pandoc, pandoc-citeproc and a LaTeX environment are installed.

Functional-Programming - Functional Programming concepts, examples and patterns illustrated in Haskell, Ocaml and Python

  •    Haskell

The purpose of this tutorial is to illustrate functional programming concepts in many languages by providing reusable and useful snippets of code, examples, case studies and applications.

Elm - Functional Reactive Programming Language compiles to Javascript

  •    Javascript

Elm is a functional reactive programming (FRP) language that compiles to HTML, CSS, and JS. FRP is a concise and elegant way to create highly interactive applications and avoid callbacks. It aims to make web development more pleasant. Functional Reactive Programming (FRP) is a high-level way to work with interactions. It provides control flow structures for time.

compiler - Compiler for Elm, a functional language for reliable webapps.

  •    Haskell

Learn about the Elm programming language at elm-lang.org.

not-awesome-es6-classes - A curated list of resources on why ES6 (aka ES2015) classes are NOT awesome


Reverse-inspired by all of the awesome lists on GitHub, like Awesome, Awesome Awesomeness, Awesome JavaScript, Awesome React, Awesome Cycle.js, Awesome Go, Awesome Elixir, Awesome Elm, etc. While ES6 brings several useful and syntactically pleasing new features to JavaScript, there are many people in the JS community who feel that adding class syntax to the language was a mistake. I share this sentiment, but I have encountered quite a few programmers in the wild who don't agree or simply don't seem to understand why some of us have this opinion. So, I wanted to create an online reference where people could come to learn specifically about this issue and why they might not actually need class syntax in JavaScript.

Idris-dev - A Dependently Typed Functional Programming Language

  •    Haskell

A Dependently Typed Functional Programming Language