All Projects β†’ giogonzo β†’ fp-ts-ramda

giogonzo / fp-ts-ramda

Licence: MIT license
Ramda functions reimplemented in fp-ts

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to fp-ts-ramda

List
πŸ† An immutable list with unmatched performance and a comprehensive functional API.
Stars: ✭ 1,604 (+1143.41%)
Mutual labels:  ramda
vscode-fp-ts-codegen
Expands haskell-syntax ADTs to typescript equivalent types definitions using gcanti/fp-ts-codegen
Stars: ✭ 16 (-87.6%)
Mutual labels:  fp-ts
R.apex
Functional utility library for Apex
Stars: ✭ 80 (-37.98%)
Mutual labels:  ramda
Ramda Extension
🀘Utility library for functional JavaScript. With ❀️ to Ramda.
Stars: ✭ 139 (+7.75%)
Mutual labels:  ramda
ramda.py
Python clone of Ramda.js
Stars: ✭ 64 (-50.39%)
Mutual labels:  ramda
mern-boilerplate
A Full MERN Stack Boilerplate for Web Apps including a local authentication system. Uses React, Express.js, MongoDB, Redux, Passport.js, Webpack, Testing, and more.
Stars: ✭ 211 (+63.57%)
Mutual labels:  ramda
Utils.js
Fast, small and purely functional utility library
Stars: ✭ 102 (-20.93%)
Mutual labels:  ramda
typescript-react-starter
React & TypeScript Starter with webpack, ts-jest and runtime environment variables. It comes with fp-ts ecosystem and pre-configured prettier, eslint, vscode, husky hooks and Dockerfile to build a deployable image of your app
Stars: ✭ 17 (-86.82%)
Mutual labels:  fp-ts
Fae
A functional module for Deno inspired from Ramda.
Stars: ✭ 44 (-65.89%)
Mutual labels:  ramda
rocket-pipes
Powerful pipes for TypeScript, that chain Promise and ADT for you 🚌 -> ⛰️ -> 🚠 -> πŸ‚ -> πŸš€
Stars: ✭ 18 (-86.05%)
Mutual labels:  ramda
Rambdax
Extended version of Rambda
Stars: ✭ 148 (+14.73%)
Mutual labels:  ramda
ramdatutorial
Companion source code for a Ramda Tutorial
Stars: ✭ 24 (-81.4%)
Mutual labels:  ramda
retry-ts
Retry combinators for monadic actions that may fail
Stars: ✭ 151 (+17.05%)
Mutual labels:  fp-ts
Ramdascript
🐏 Lisp that compiles to JavaScript in the Ramda way
Stars: ✭ 128 (-0.78%)
Mutual labels:  ramda
validarium
πŸ›‘Agnostic validation library for JavaScript applications.
Stars: ✭ 29 (-77.52%)
Mutual labels:  ramda
Ramda Debug
🐏 Debugging for Ramda.
Stars: ✭ 113 (-12.4%)
Mutual labels:  ramda
ramdu
Small utils set built around Ramda
Stars: ✭ 18 (-86.05%)
Mutual labels:  ramda
purifree
Pointfree type-safe functional programming library for TypeScript - with do notation, HKTs, generic lifts and more
Stars: ✭ 64 (-50.39%)
Mutual labels:  fp-ts
spellbook
Spellbook is a bookmark extension for Chrome and Firefox
Stars: ✭ 19 (-85.27%)
Mutual labels:  ramda
learn-ramda
🐏 Learn ramda, the interactive way
Stars: ✭ 84 (-34.88%)
Mutual labels:  ramda

(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:

  • be API compatible with the original Ramda function (as far as possible, see below)
  • come with a property-based test to verify such compatibility (see other tests as an example)
  • be typesafe (or even improve on the status of @types/ramda, if possible)
  • come with a few typelevel tests (see other tests as an example)
  • be non deprecated in Ramda

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:

  • the R.__ placeholder
  • "Acts as a transducer if a transformer is given..."
  • "Dispatches to the X method of argument, if present."
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].