Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/albohlabs/awesome-fp-ts

A curated list of amazingly awesome fp-ts resources
https://github.com/albohlabs/awesome-fp-ts

List: awesome-fp-ts

awesome fp-ts io-ts

Last synced: about 1 month ago
JSON representation

A curated list of amazingly awesome fp-ts resources

Awesome Lists containing this project

README

        

# Awesome fp-ts resources

A curated list of amazingly awesome fp-ts resources.

If you think something should be added, please create a new issue.

* [gcanti/fp-ts](https://github.com/gcanti/fp-ts)
* [Code Conventions](https://gcanti.github.io/fp-ts/guides/code-conventions.html)
* [Understanding the types](https://github.com/samhh/fp-ts-std/blob/master/docs/understanding-types.md)

# Getting started
* [Mostly adequate guide to FP-TS](https://cjonas.gitbook.io/mostly-adequate-fp-ts/)
* [Book: Introduction to Functional Programming by Giulio Canti](https://github.com/enricopolanski/functional-programming)
* [Eq](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_11.md)
* [Ord](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_13.md)
* [Semigroup](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_15.md)
* [Monoid](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_16.md)
* [Category](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_20.md)
* [Functor](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_22.md)
* [Applicative](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_28.md)
* [IO](https://github.com/gcanti/talks/blob/master/blog_posts/Apr_14.md)
* [Either vs Validation](https://github.com/gcanti/talks/blob/master/blog_posts/Apr_3.md)
* [Monad](https://github.com/gcanti/talks/blob/master/blog_posts/Apr_9.md)

# Advanced
* [How to write type class instances for your data type](https://gcanti.github.io/fp-ts/guides/HKT.html)
* [Interoperability with non functional code using fp-ts](https://github.com/gcanti/talks/blob/master/blog_posts/Feb_12.md)
* [Introduction to property based testing](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_17.md)

# Community
* [Should I use fp-ts Task?](https://dev.to/anthonyjoeseph/should-i-use-fp-ts-task-h52)
* [fp-ts Cheatsheet](https://github.com/inato/fp-ts-cheatsheet)
* [fp-ts, sequenceT, and sweet sweet async typed FP](https://dev.to/gnomff_65/fp-ts-sequencet-and-sweet-sweet-async-typed-fp-5aop)
* [fp-ts and Beautiful API Calls](https://dev.to/gnomff_65/fp-ts-and-beautiful-api-calls-1f55)
* [When An Error Is Not An Exception](https://dev.to/vncz/forewords-and-domain-model-1p13)
* [FP-TS for HTTP-requests](https://kimmosaaskilahti.fi/blog/2019-08-29-fp-ts/)
* [Basic introduction to FP-TS](https://davetayls.me/blog/2018/06/09/fp-ts-02-handling-error-cases)
* [The State monad](https://paulgray.net/the-state-monad/)

## Practical Guide by Ryan Lee
* [Pipe and Flow](https://rlee.dev/practical-guide-to-fp-ts-part-1)
* [Option, Map, Flatten, Chain](https://rlee.dev/practical-guide-to-fp-ts-part-2)
* [Task, Either, TaskEither](https://rlee.dev/practical-guide-to-fp-ts-part-3)
* [Arrays, Semigroups, Monoids](https://rlee.dev/practical-guide-to-fp-ts-part-4)
* [Apply, Sequences, and Traversals](https://rlee.dev/practical-guide-to-fp-ts-part-5)
* [The Do Notation](https://rlee.dev/practical-guide-to-fp-ts-part-6)

## Yuriy Bogomolov
* [Introduction series to FP-TS](https://ybogomolov.me/01-higher-kinded-types/)
* [Building eDSLs in functional TypeScript :film_strip:](https://github.com/YBogomolov/workshop-edsl-in-typescript)
* [YBogomolov/monadic-mondays](https://github.com/YBogomolov/monadic-mondays)
* [Making Illegal States Unrepresentable](https://ybogomolov.me/making-illegal-states-unrepresentable/)
* [Making Illegal States Unrepresentable :film_strip:](https://www.youtube.com/watch?v=T7i2wlCqgJk)

## Andy White
* [ReaderTaskEither Foundations](https://andywhite.xyz/posts/2021-01-27-rte-foundations/)
* [ReaderTaskEither and React](https://andywhite.xyz/posts/2021-01-28-rte-react/)
* [The ReaderTaskMonad](https://andywhite.xyz/posts/)

# Why is fp-ts TaskEither Like That?
* [Either vs Exception Handling](https://dev.to/anthonyjoeseph/either-vs-exception-handling-3jmg)
* [TaskEither vs Promise](https://dev.to/anthonyjoeseph/taskeither-vs-promise-2g5e)
* [TaskEither vs Fluture](https://dev.to/anthonyjoeseph/taskeither-vs-fluture-4e0n)

## Functional design
* [combinators](https://github.com/gcanti/talks/blob/master/blog_posts/Feb_19.md)
* [how to make the `time` combinator more general](https://github.com/gcanti/talks/blob/master/blog_posts/Feb_23.md)
* [tagless final](https://github.com/gcanti/talks/blob/master/blog_posts/Feb_24.md)
* [smart constructors](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_14.md)
* [TDD in TypeScript (aka abusing `declare`)](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_18_1.md)
* [Algebraic Data Types](https://github.com/gcanti/talks/blob/master/blog_posts/Mar_18_2.md)

## Domain modeling in TypeScript by Benoit Ruiz
* [Introduction](https://dev.to/ruizb/introduction-961)
* [The domain and some concepts](https://dev.to/ruizb/the-domain-and-some-concepts-3ene)
* [Using fp-ts and newtype-ts: types](https://dev.to/ruizb/using-fp-ts-and-newtype-ts-types-em8)
* [Using fp-ts and newtype-ts: implementation](https://dev.to/ruizb/using-fp-ts-and-newtype-ts-implementation-422a)
* [Using fp-ts and io-ts: types and implementation](https://dev.to/ruizb/using-fp-ts-and-io-ts-types-and-implementation-1k6a)

# Examples
* [grossbart.github.io/fp-ts-recipes](https://grossbart.github.io/fp-ts-recipes) - A collection of practical examples
* [gcanti/docs-ts](https://github.com/gcanti/docs-ts) - A zero-config documentation tool for my TypeScript projects

# Coming from lodash/ramda
* [giogonzo/fp-ts-ramda](https://github.com/giogonzo/fp-ts-ramda) - Ramda functions reimplemented
* [tecklund/lodash-to-fp-ts](https://github.com/tecklund/lodash-to-fp-ts) - Lodash functions reimplemented
* [samhh/fp-ts-std](https://github.com/samhh/fp-ts-std) - missing pseudo-standard library

# Bindings
* [gcanti/fp-ts-rxjs](https://github.com/gcanti/fp-ts-rxjs)
* [gcanti/fp-ts-local-storage](https://github.com/gcanti/fp-ts-local-storage)
* [gcanti/fp-ts-fluture](https://github.com/gcanti/fp-ts-fluture)
* [joshburgess/fp-ts-most](https://github.com/joshburgess/fp-ts-most)
* [werk85/fp-ts-ixjs](https://github.com/werk85/fp-ts-ixjs)

# Libraries
* [gcanti/fp-ts-contrib](https://github.com/gcanti/fp-ts-contrib) - A community driven utility package
* [gcanti/fp-ts-routing](https://github.com/gcanti/fp-ts-routing) - A type-safe bidirectional routing library for TypeScript
* [gcanti/retry-ts](https://github.com/gcanti/retry-ts) - Retry combinators for monadic actions that may fail
* [nrdlab/pattern-matching-ts](https://github.com/nrdlab/pattern-matching-ts)
* [devexperts/remote-data-ts](https://github.com/devexperts/remote-data-ts) - algebraic data type
* [gcanti/io-ts](https://github.com/gcanti/io-ts) - Runtime type system for IO decoding/encoding
* [gcanti/io-ts-types](https://github.com/gcanti/io-ts-types) - A collection of codecs and combinators
* [gillchristian/io-ts-reporters](https://github.com/gillchristian/io-ts-reporters) - Error reporters
* [gcanti/monocle-ts](https://github.com/gcanti/monocle-ts) - Functional optics: a (partial) porting of Scala monocle
* [unsplash/request-frp](https://github.com/unsplash/request-frp) - Package that provides pure wrappers around `fetch` and `XMLHttpRequest`