The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning. Learn more →
Top 23 Functional programming Open-Source Projects
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
scala
Scala 2 compiler and standard library. Bugs at https://github.com/scala/bug; Scala 3 at https://github.com/scala/scala3
-
milewski-ctfp-pdf
Bartosz Milewski's 'Category Theory for Programmers' unofficial PDF and LaTeX source
-
Javaslang
vʌvr (formerly called Javaslang) is a non-commercial, non-profit object-functional library that runs with Java 8+. It aims to reduce the lines of code and increase code quality.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Lodash.js is like the Swiss Army knife for JavaScript developers. Need to manipulate data structures or dabble in functional programming? Lodash is here to save the day with its arsenal of utilities. It's all about making your code cleaner and your life easier, which is probably why big guns like Google and Airbnb have it in their toolkit.
Not too far behind is Underscore.js, another utility library that's all about enhancing your JavaScript mojo. Whether you're dealing with arrays, objects, or strings, Underscore has got something for you. It's like Lodash's sibling, offering similar functionalities but with its own flair. The choice between them is like picking between chocolate and vanilla - it really comes down to personal taste.
JavaScript is great for point-free programming! Make sure you check out Ramda.js https://ramdajs.com/
It’s fun in the sense that solving a puzzle is fun, but I avoid it for anything I need to maintain long-term.
But it’s good practice for understanding combinators which is useful for some kinds of problems.
Project mention: Mostly adequate guide to Functional Programming (in JavaScript) | news.ycombinator.com | 2023-07-25
Repository: getify/Functional-Light-JS
Lichess - Online Chess Server. Scala, TypeScript
Recently I had to revisit the "JVM languages universe" again. Yes, language(s), plural! Java isn't the only language that uses the JVM. I previously used Scala, which is a JVM language, to use Apache Spark for Data Engineering workloads, but this is for another post 😉.
Project mention: Eelco Dolstra's leadership is corrosive to the Nix project | news.ycombinator.com | 2024-04-22> https://github.com/NixOS/nix/pull/9911#issuecomment-19252073...
Project mention: reflect-cpp - Now with compile time extraction of field names from structs and enums using C++-20. | /r/cpp | 2023-12-09Category Theory for Programmers by Bartosz Milewski (https://github.com/hmemcpy/milewski-ctfp-pdf/releases)
Project mention: From a Lorry Driver to Ruby on Rails Developer at 38 | news.ycombinator.com | 2024-04-21I think it’s great that functional programming is making its way into traditional imperative languages - even JavaScript (I recently came across https://gcanti.github.io/fp-ts/ as a pretty extreme example)
Elixir/Erlang has function-level pattern matching, which I really like. I’ve yet to see it anywhere else, though my understanding is it came from Prolog.
You probably noticed that .SetName() returns a Either. You may have come across Unit in libraries like MediatR or Language-Ext. It's a simple construct representing a type with only one possible value. We use it as a placeholder for operations that do not return a value but may return another state. In our example, .SetName() is a Command that does not return a value but may fail. Therefore, the monad Either carries two possible states: Right (without value) or Left (with an Error).
Project mention: Carp: A statically typed Lisp, without a GC, for real-time applications | news.ycombinator.com | 2024-03-11
Functional programming related posts
- Arrow Project for Arrow on GitHub
- Eelco Dolstra's leadership is corrosive to the Nix project
- I use NixOS for my home-server, and you should too!
- From a Lorry Driver to Ruby on Rails Developer at 38
- JEP draft: Exception handling in switch
- Colima k8s nix setup
- NixOs - Your portable dev enviroment
-
A note from our sponsor - WorkOS
workos.com | 26 Apr 2024
Index
What are some of the best open-source Functional programming projects? This list will help you:
Project | Stars | |
---|---|---|
1 | lodash | 58,868 |
2 | underscore | 27,233 |
3 | ramda | 23,578 |
4 | mostly-adequate-guide | 23,160 |
5 | functional-programming-jargon | 18,524 |
6 | Functional-Light-JS | 16,486 |
7 | lila | 14,578 |
8 | scala | 14,271 |
9 | nix | 10,879 |
10 | milewski-ctfp-pdf | 10,745 |
11 | fp-ts | 10,452 |
12 | Cycle.js | 10,237 |
13 | ios-oss | 8,354 |
14 | fish-redux | 7,341 |
15 | RxKotlin | 6,997 |
16 | language-ext | 6,159 |
17 | lazy.js | 6,026 |
18 | AlgoXY | 5,972 |
19 | Kategory | 5,963 |
20 | android-oss | 5,735 |
21 | bash-oo-framework | 5,538 |
22 | Javaslang | 5,528 |
23 | Carp | 5,393 |
Sponsored