giogonzo / fp-ts-ramda

Ramda functions reimplemented in fp-ts
https://giogonzo.github.io/fp-ts-ramda/
MIT License
138 stars 9 forks source link
fp-ts ramda typescript

(WIP!) fp-ts-ramda

Some Ramda functions reimplemented using fp-ts.

Since the question "how do I implement x from Ramda in fp-ts" comes up pretty often

Contribution guidelines

Each function should:

More specific notes regarding implementation choices

[TODO] API compatibility with Ramda

For some Ramda functions, 100% API compatibility is easy to obtain. For others (typically the ones relying on instances of some typeclass), it's difficult or nearly impossible without compromising type-safety.

Currying

All Ramda functions are "auto curried". Since an objective is to remain mostly API-compatible, translations must be curried too.

Each function should have a series of TS overloads making all the possible combinations of parameters well-typed, and be implemented using manual currying: see for instance adjust.ts. Manual currying is preferred in order to avoid compromising perf, but might be revisited in the future.

Out of scope

A few things I haven't considered up to now and/or not sure how to handle: