Open-source projects categorized as Fp

Top 23 Fp Open-Source Projects

  • GitHub repo Shapeless

    Generic programming for Scala

    Project mention: [Scala3] Get the type of container with wildcard type (i.e. List[?]) | reddit.com/r/scala | 2021-03-01

    Well, that is sometimes possible, depending on a structure of Foo. If you have a List, for instance, you can iterate every element, and if every element is A, then it's safe to cast a list to List[A]. In fact, shapeless provides exactly that, in form of Typeable[List[A]], in a more generic form. I suppose shapeless also can derive a typeable instance for you, but I haven't dug into scala 3 version of it.

  • GitHub repo FS2

    Compositional, streaming I/O library for Scala

    Project mention: Is there a library which allows to manage websocket connections? | reddit.com/r/scala | 2021-03-01

    The other day I was also trying to get rid of akka stack and replaced it with http4s for server and sttp for client (http4s websocket client support is in open state for more than 5 years for now: https://github.com/http4s/http4s/issues/330). It still works pretty well, especially since they both can be built from fs2 steams.

  • Scout

    Get performance insights in less than 4 minutes. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.

  • GitHub repo doobie

    Functional JDBC layer for Scala.

  • GitHub repo Monix

    Asynchronous, Reactive Programming for Scala and Scala.js.

    Project mention: Alternative to RxJava/RxScala | reddit.com/r/scala | 2021-02-08

    The Observer is a bit different, it returns Future[Ack] for built-in back-pressure. We can Continue / Stop synchronously or asynchronously.

  • GitHub repo returns

    Make your functions return something meaningful, typed, and safe!

    Project mention: Higher Kinded Types in Python | dev.to | 2020-10-25

    dry-python/returns[email protected] is released! And it means that now anyone can use our Higher Kinded Types emulation in their projects.

  • GitHub repo scalajs-react

    Facebook's React on Scala.JS

    Project mention: Scala JS SPA skeleton | reddit.com/r/scala | 2021-01-24

    I use scalajs-react to make SPAs with Scala.JS (although disclaimer: I'm the author).

  • GitHub repo cats-effect

    The pure asynchronous runtime for Scala

    Project mention: Feedback on my implementation of an asynchronous semaphore | reddit.com/r/scala | 2021-02-27

    But reconciling two atomic refs seems overcomplicated even if it were sound, which I'm not sure is the case here. Instead, you can smoosh both permits and waiters to a single atomic state. This is similar to how cats effect implements semaphore (see their atomic state here)

  • GitHub repo Rambda

    Faster and smaller alternative to Ramda

  • GitHub repo frunk

    Funktional generic type-level programming in Rust: HList, Coproduct, Generic, LabelledGeneric, Validated, Monoid and friends.

    Project mention: Generic associated types encode higher-order functions on types | reddit.com/r/rust | 2021-01-04

    I wonder if frunk can (ab)use this kind of trick to make their crate even more powerful. IIRC they have a bunch of amazing and horrible workarounds to work with type-level lists.

  • GitHub repo frameless

    Expressive types for Spark.

    Project mention: Spark scala v/s pyspark | reddit.com/r/dataengineering | 2021-02-24

    The preferred way to write Spark programs is to use DataFrame API which is untyped and is essentially the same in Scala, C# and Python. It's a DSL that's used to describe AST of the computation and the end result is the same regardless of language. There's a library called Frameless (https://github.com/typelevel/frameless) that implements typed DataFrame API but it is not in wide use, it looked dead for quite some time (though now development seems to continue) and didn't play nice with IntelliJ IDEA last time I checked. Performance-wise there's no difference most of the time (since all the program does is create an AST) except when using UDFs - Python UDFs are significantly slower and you can't write "proper" UDFs in Python - ones that generate Java code.

  • GitHub repo Bow

    🏹 Bow is a cross-platform library for Typed Functional Programming in Swift

  • GitHub repo fasy

    FP iterators that are both eager and asynchronous

    Project mention: Prray -- "Promisified" Array, it compatible with the original Array but comes with async versions of native Array methods, such as mapAsync, filterAsync, everyAsync... | reddit.com/r/javascript | 2020-12-21
  • GitHub repo kotlin-result

    A multiplatform Result monad for modelling success or failure operations.

    Project mention: Everywhere I go, I miss Rust's `enum`s | reddit.com/r/rust | 2021-01-26

    Should I use someone else's: https://github.com/michaelbull/kotlin-result or https://arrow-kt.io/docs/apidocs/arrow-core-data/arrow.core/-either/ ?

  • GitHub repo effect-ts

    A Fully-fledged functional effect system for typescript with a rich standard library

    Project mention: Is there something like ZManaged or cats.Resource in the Javascript universe? | reddit.com/r/scala | 2021-01-13

    The documentation you linked to is pretty out of date, plus it was renamed to effect-ts: https://github.com/Matechs-Garage/effect-ts I have 3 services in production written with this. It's great.

  • GitHub repo monio

    Async-capable IO monad for JS

    Project mention: [AskJS] async iterators to replace EventEmitter, EventTarget and so on | reddit.com/r/javascript | 2021-02-25
  • GitHub repo pfps-shopping-cart

    :shopping_cart: The Shopping Cart application developed in the book "Practical FP in Scala: A hands-on approach"

    Project mention: Example of building web apis (functionally) in Scala | reddit.com/r/scala | 2021-02-16

    Read the book "Practical FP in Scala" by Gabriel Volpe _(aka gvolpe). - This one to see how to use all the previous knowledge on building a real-world application.

  • GitHub repo Nyaya

    Random Data Generation and/or Property Testing in Scala & Scala.JS.

  • GitHub repo Scala Test-State

    Scala Test-State.

  • GitHub repo pfps-examples

    :izakaya_lantern: Standalone examples shown in the book "Practical FP in Scala: A hands-on approach"

    Project mention: Example of building web apis (functionally) in Scala | reddit.com/r/scala | 2021-02-16

    I'm working my way through this book, and it is excellent. Accompanying the book are some repos that you can check out. The book implements the repos.

  • GitHub repo metalang99

    A functional language for C99 preprocessor metaprogramming

    Project mention: Metalang99: Full-blown C99 preprocessor metaprogramming | news.ycombinator.com | 2021-02-26
  • GitHub repo Index

    ⚡ Pattern Matching in Typescript

    Project mention: Pattern-matching-ts: Pattern Matching in TypeScript | news.ycombinator.com | 2021-02-15
  • GitHub repo laserdisc

    A Future-free Fs2 native pure FP Redis client

  • GitHub repo Bingo Functional

    A simple functional programming library for PHP

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-03-01.


What are some of the best open-source Fp projects? This list will help you:

Project Stars
1 Shapeless 3,123
2 FS2 1,816
3 doobie 1,781
4 Monix 1,761
5 returns 1,595
6 scalajs-react 1,439
7 cats-effect 1,127
8 Rambda 1,050
9 frunk 719
10 frameless 711
11 Bow 537
12 fasy 487
13 kotlin-result 357
14 effect-ts 316
15 monio 309
16 pfps-shopping-cart 258
17 Nyaya 165
18 Scala Test-State 120
19 pfps-examples 110
20 metalang99 106
21 Index 105
22 laserdisc 76
23 Bingo Functional 41