🐏 Ramda: My library of resources
Tags: javascript, functional
Published: 2020-05-26 10:53:10

Ramda is my go to JavaScript utility library. I have used it for about 4 years now and over that time I have built up a collection of resources. 

If you are looking to learn a little more about Ramda or already have experience of the library I am sure there is something in here that you will find useful.

I maintain a GitHub repo of these resources if there is anything you would like to add - [Github - Ramda Links](https://github.com/iainfreestone/ramda-links)

# Ramda

[Ramda](http://ramdajs.com/)

[What Function Should I Use](https://github.com/ramda/ramda/wiki/What-Function-Should-I-Use%3F)

[Ramda Cookbook](https://github.com/ramda/ramda/wiki/Cookbook)

[Gitter Channel](https://gitter.im/ramda/ramda)

# Articles
### General

[Why are we not afraid to think functionally with Ramda? (28th November 2018)](https://blog.usejournal.com/why-are-we-not-afraid-to-think-functionally-with-ramda-fb17f733fde8)

[Recursive Rolling Calculations with Ramda (27th September 2018)](https://towardsdatascience.com/recursive-rolling-calculations-with-ramda-adf494958a37)

[A beginners guide to Ramda (Part 2) — Lenses (23rd July 2018)](https://itnext.io/a-beginners-guide-to-ramda-part-2-lenses-62bdd3993598)

[A beginners guide to Ramda (Part 1) — Currying and composition (10th July 2018)](https://medium.com/@richardthetan/a-beginners-guide-to-ramda-part-1-7e4a34972e97)

[GraphQL Resolvers + Ramda = CRUD (13th May 2018)](https://medium.com/front-end-hacking/graphql-resolvers-ramda-crud-fdd08aae25a0)

[I ❤ Ramda — Partial Application with a Special Placeholder (11th May 2018)](https://hackernoon.com/i-ramda-partial-application-with-curry-e95100f7c7b1)

[Ramda Chops: Function Currying (23rd January 2018)](https://robertwpearce.com/blog/ramda-chops-function-currying.html)

[Getting started with Functional Programming and Ramda (26th December 2017)](https://www.davinryan.com/getting-started-with-functional-programming-and-ramda/)

[Easy pipeline debugging with curried console.log (20th December 2017)](https://blog.carbonfive.com/2017/12/20/easy-pipeline-debugging-with-curried-console-log/?utm_content=64850811&utm_medium)

[Functional programming with Ramda (20th November 2017)](https://github.com/Bravilogy/ramda-blog/tree/master)

[Functional JavaScript: Why I prefer using Ramda over Lodash or Underscore! (19th November 2017)](https://www.codementor.io/michelre/functional-javascript-why-i-prefer-using-ramda-over-lodash-or-underscore-dzovysq11)

[Optimize JavaScript code for composability with Ramda.js (6th October 2017)](https://blog.bigbinary.com/2017/10/06/optimize-javascript-code-for-composability-with-ramdajs.html)

[Functional lenses in JavaScript (6th October 2017)](https://www.linkedin.com/pulse/functional-lenses-javascript-vladim%C3%ADr-gorej/)

[Code Without If or Switch statements ? Try with Ramda library! (22nd September 2017)](https://medium.com/code-without-if-statements-try-with-ramda-library/code-without-if-or-switch-statements-try-with-ramda-library-921bb7d4d60c)

[The Beauty of Javascript Composition (14th September 2017)](https://www.jeremydaly.com/beauty-javascript-composition/)

[Monad transformers in JavaScript (28th August 2017)](https://www.linkedin.com/pulse/monad-transformers-javascript-vladim%C3%ADr-gorej)

[Use a little bit of FP (17th August 2017)](https://glebbahmutov.com/blog/use-a-little-bit-of-fp/)

[After Sliced Bread Came Ramda.js (Part II) (14th August 2017)](https://halistechnology.com/2017/08/14/after-sliced-bread-came-ramda-js-part-ii/)

[After Sliced Bread Came Ramda.js (Part I) (5th August 2017)](https://halistechnology.com/2017/08/05/after-sliced-bread-came-ramda-js/)

[Composable Object validations in JS (31st July 2017)](https://codeburst.io/composable-object-validations-in-js-efa1ebacc34e)

[Compute Even Digits — Fun with Ramda pt.1 (22nd July 2017)](https://medium.com/@tomaskonrady/compute-even-digits-fun-with-ramda-pt-1-17fd41d382d2)

[Using functional lenses to modify objects by example (22nd July 2017)](https://glebbahmutov.com/blog/lenses/)

[The beauty in Partial Application, Currying, and Function Composition (18th July 2017)](https://hackernoon.com/the-beauty-in-partial-application-currying-and-function-composition-d885bdf0d574)

[Ramda — R.adjust (3rd July 2017)](https://medium.com/@kyletilman/ramda-r-adjust-b69a575274fa)

[Ramda for reactive streams (14th April 2017)](https://glebbahmutov.com/blog/ramda-for-reactive-streams/)

[Functional Programming in JS with Ramda: Arrays and Objects (9th April 2017)](https://medium.com/@arecvlohe/functional-programming-in-js-with-ramda-arrays-and-objects-468653f24d19)

[Converging to Point Free (30th March 2017)](http://theonlywinningmove.net/2017/03/30/converging-to-point-free/)

[Functional Workaholism (28th February 2017)](https://codepen.io/brekk/post/functional-workaholism) 

[Ramda Adjunct (23th February 2017)](https://www.linkedin.com/pulse/ramda-adjunct-vladim%C3%ADr-gorej)

[Demystifying functional programming with Ramda (15th February 2017)](https://izifortune.com/demystifying-functional-programming-with-ramda/)

[Ramda.js in Real World Productions (23rd January 2017)](https://medium.com/@erwai/ramda-js-in-real-world-productions-1f088e40a560)

[Composing lenses in Ramda (4th January 2017)](https://www.linkedin.com/pulse/composing-lenses-ramda-vladim%C3%ADr-gorej)

[Some Functional Javascript Goodness (17th November 2016)](http://blog.howarddierking.com/2016/11/17/some-functional-javascript-goodness/)

[An Introduction Into Lenses In JavaScript (17th November 2016)](https://medium.com/javascript-inside/an-introduction-into-lenses-in-javascript-e494948d1ea5)

[Functional Programming In JavaScript — With Practical Examples (Part 2) (16th November 2016)](https://medium.freecodecamp.org/functional-programming-in-js-with-practical-examples-part-2-429d2e8ccc9e)

[Functional Programming In JavaScript — With Practical Examples (Part 1) (14th November 2016)](https://medium.freecodecamp.org/functional-programming-in-js-with-practical-examples-part-1-87c2b0dbc276)

[Stop Writing for-loops (compose) (16th August 2016)](https://medium.com/@wpcarro/stop-writing-for-loops-compose-7d4ac507bd36)

[Why Functional Programming? (22nd July 2016)](https://medium.com/the-functional-programmer/why-functional-programming-fp-8740b41b6f11)

[Functional Components with React stateless functions and Ramda (4th July 2016)](https://medium.com/@mirkomariani/functional-components-with-react-stateless-functions-and-ramda-e83e54fcd86b)

[Hands-on Functional Programming with Ramda.js (15th June 2016)](https://www.sitepoint.com/functional-programming-with-ramda/)

[Thinking in Ramda: Getting Started (24th May 2016)](http://randycoulman.com/blog/2016/05/24/thinking-in-ramda-getting-started/)

[Lifting functions into monadic Context in JavaScript (23rd April 2017)](https://www.linkedin.com/pulse/lifting-functions-monadic-context-javascript-vladim%C3%ADr-gorej)

[Achieving point-free JavaScript with R.converge / _.over (12th April 2016)](https://medium.com/@nicoespeon/achieving-point-free-javascript-with-r-converge-overargs-94060fd0ed7a)

[I Think Ramda Might Be Better Than Lodash or Underscore (3rd April 2016)](http://funkyjavascript.com/i-think-ramda-might-be-better-than-lodash-or-underscore/)

[An Intro to Functional Programming Concepts in JavaScript (23rd October 2015)](https://medium.com/@collardeau/intro-to-functional-programming-concepts-in-javascript-b0650773139c)

[Functional programming with Ramda.js (5th September 2015)](https://neiro.io/2015/09/05/functional-programming-with-ramda-js.html)

[Practical ramda - functional programming examples (27th August 2015)](https://macwright.org/2015/08/27/practical-ramda.html)

[Refactoring Towards Functional Programming in JavaScript (14th June 2015)](http://rebootjeff.github.io/blog/2015/06/14/refactoring-towards-functional-programming-in-javascript/)

[Breaking out of the For Loop: Pragmatic Functional Techniques in JavaScript (14th May 2015)](https://erokar.svbtle.com/functional-js)

[Write Reacts components in a functional way with Ramda and PointFree (15th April 2015)](http://blog.codeprototype.com/2015/04/15/write-reacts-component-in-functional-way-with-ramda-and-pointfree-md/)

[Streaming Logs with Transducers and Ramda (24th March 2015)](http://simplectic.com/blog/2015/ramda-transducers-logs/)

[Tacit Ramda (8th March 2015)](https://medium.com/@bobiblazeski/tacit-ramda-c914775ff4b1)

[Curry And Compose (why you should be using something like ramda in your code) (22nd February 2015)](https://jsleao.wordpress.com/2015/02/22/curry-and-compose-why-you-should-be-using-something-like-ramda-in-your-code/)

[A Practical Ramda example: Scraping](https://james-forbes.com/?/posts/ramdaScrape)

[Pagination for a web app](https://www.romanzolotarev.com/pagination/)

[Practical Functional Javascript with Ramda 17th December 2014](https://developer.telerik.com/featured/practical-functional-javascript-ramda/)

[Lodash to Ramda example (15th August 2014)](https://glebbahmutov.com/blog/lodash-to-ramda-example/)

[The Philosophy of Ramda](http://fr.umio.us/the-philosophy-of-ramda/)

[Introducing Ramda (16th May 2014)](http://buzzdecafe.github.io/code/2014/05/16/introducing-ramda)

### Ramda with React and Redux

[Easily Integrate Ramda into Your React Workflow (14th September 2019)](https://dev.to/hint/easily-integrate-ramda-into-your-react-workflow-3kh4)

[Purely Functional React Signup with Redux-Observable, Recompose, and Ramda (4th April 2018)](https://medium.com/front-end-hacking/purely-functional-react-signup-with-redux-observable-recompose-and-ramda-d37fc0424bdb)

[React state management with Lenses (9th March 2018)](https://engineering.footballradar.com/react-state-management-with-lenses/)

[Redux + Ramda: Let’s Code a Higher-Order “Duck” (25th February 2018)](https://medium.com/@yazeedb/redux-ramda-lets-code-a-higher-order-duck-dc87021406cc)

[React & Redux (& Ramda): Composing connectors — a powerful re-usability pattern (19th November 2017)](https://medium.com/@rubenknol/react-redux-ramda-composing-connectors-a-powerful-re-usability-pattern-c2c97e21876)

[Better Redux Selectors with Ramda (7th September 2017)](https://medium.com/@grrttn/better-redux-selectors-with-ramda-c1ab7af3f16)

[Less Redux Boilerplate with Union Types (2nd September 2017)](https://codeburst.io/less-redux-boilerplate-with-union-types-3d5fd6acb53c)

[The 4R framework - 3 libraries to use in your React app (25th August 2017)](http://arianv.com/post/the-4r-framework-3-libraries-to-use-in-your-react-app/)

[Functional Redux Reducers with Ramda (August 2017)](https://alligator.io/react/functional-redux-reducers-with-ramda/?utm_content=bufferef7f6&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer)

[Immutable Deep State Updates in React with Ramda.js (27th May 2017)](https://vanslaars.io/post/setstate-lenses/)

[Let’s Learn: Composing React Components With Ramda (1st March 2017)](https://medium.com/let-s-learn/lets-learn-composing-react-components-with-ramda-5db457997554)

[React + Ramda What is Ramda? (2017)](https://www.burntcaramel.com/blog/2017/react-ramda/)

[Using Ramdas Evolve in Redux Reducers to Create New State (25th February 2017)](https://www.jernejsila.com/2017/02/25/using-ramda-evolve-redux-reducers-creating-new-state/)

[Writing Elegant Code With React, Redux and Ramda (28th August 2016)](https://medium.com/javascript-inside/the-elegance-of-react-ebc21a2dcd19)

[Using Ramda for React Components (26th July 2016)](http://randycoulman.com/blog/2016/07/26/using-ramda-for-react-components/)

[Using Ramda With Redux (31st February 2016)](http://randycoulman.com/blog/2016/02/16/using-ramda-with-redux/)

### Ramda with Angular

[Using Ramda.js with Angular 2+ / Angular CLI (5th August 2017)](https://medium.com/@jacobedawson/using-ramda-js-with-angular-2-angular-cli-9580f64c1794)

# Videos

[Ramda: A Functional Programming Library for JavaScript](https://knowthen.com/ramda/)

[Hey Underscore, You're Doing It Wrong!](https://www.youtube.com/watch?v=m3svKOdZijA&app=desktop)

[Ramda Demo - Bob Pace](https://www.youtube.com/watch?v=digajAH_5IU)

[Ramda JS – An Introduction](https://www.youtube.com/watch?v=Cltoo-NJ2JM&list=PLrhzvIcii6GMeyUfpn-o5xVCH3_UykrzI)

[Michael Gilliland - Ramda Series](https://www.youtube.com/playlist?list=PLfzJKXh_D71QiqFxLnvNk2GWWAcSYo97E)

# Podcasts

[Functional Programming with Ramda with Christine Legge (28th August 2018)](https://devchat.tv/js-jabber/jsj-328-functional-programming-with-ramda-with-christine-legge/)

['Hardcore' Functional Programming using Ramda with Andrew D'Amelio (30th November 2015)](http://threedevsandamaybe.com/hardcore-functional-programming-using-ramda-with-andrew-damelio/)


# REPLs

[Ramda REPL](http://ramdajs.com/repl/)

[ramda-repl](https://github.com/hemanth/ramda-repl)

[Ramda + Ramda Fantasy + Sanctuary REPL](https://github.com/davidchase/ramtuary)

# Ramda Libaries/Tools

[Learn ramda, the interactive way](https://davesnx.github.io/learn-ramda/)

[Rambo](https://github.com/bahmutov/rambo)

[Ramda Suggest](https://github.com/domtronn/ramda-suggest)

[prettycats](https://github.com/seancannon/prettycats)

[babel-plugin-ramda](https://www.npmjs.com/package/babel-plugin-ramda)

[ramda-destruct](https://github.com/raine/ramda-destruct)

[ramda-lens](https://github.com/ramda/ramda-lens)

[ramdasauce](https://github.com/skellock/ramdasauce)

[ramda-suggest](https://github.com/domtronn/ramda-suggest)

[ramda-adjunct](https://github.com/char0n/ramda-adjunct)

[Ramda REPL (Atom)](https://atom.io/packages/ramda-repl)

# Ramda Type Definitions

[Typescript](https://github.com/types/npm-ramda)

[Flow](https://github.com/flowtype/flow-typed/tree/master/definitions/npm/ramda_v0.x.x)

# Ramda Debugging tools

[treis](https://github.com/raine/treis)

[ramda-debug](https://github.com/sebinsua/ramda-debug)

[Generates friendly trace info for pipe() / compose()](https://gist.github.com/nateabele/9c55ef3942a8b24f2140d8f05ec257bf)

# Ramda Snippets / Gists

[Transform props with Ramda](https://codesandbox.io/s/Oy35QN29B) [A. Sharif](https://twitter.com/sharifsbeat)

[Transforming Deeply Nested Data](https://gist.github.com/busypeoples/b2552b78aae80664c337fe56caa18ad2)

[Using Ramda with Redux to update any Object/Map like state inside reducers.](https://codesandbox.io/s/o1D9E063) [A. Sharif](https://twitter.com/sharifsbeat)

[Using ifElse for branching between 2 Components, depending on the passed in props](https://www.webpackbin.com/bins/-KoSdSQ3adsFqwZNjdb_) [A. Sharif](https://twitter.com/sharifsbeat)

[Lenses + React setSate for safely accessing and updating deeply nested data.](https://codesandbox.io/s/6DljK27R) [A. Sharif](https://twitter.com/sharifsbeat) [Andrew Van Slaars](https://twitter.com/avanslaars)

# Boilerplates / Templates

[Ramda Learning Template](https://github.com/qmacro/ramda-learning-template)

# Example Projects/Examples

[A calculator built with React, Redux and Ramda](https://github.com/panayi/calculator)

[A Sokoban game written in the functional programming style. Makes heavy use of currying, mapping, pipes and other Ramda.js features. 100% variable free!](https://github.com/RedNifre/fpsokobanjs)

# General Functional Programming

[Functional Programming Jargon](https://github.com/hemanth/functional-programming-jargon)

[Awesome FP JS](https://github.com/stoeffel/awesome-fp-js)

If you enjoyed this article you can [follow me](https://twitter.com/iain_freestone) on Twitter where I regularly post bite size tips relating to HTML, CSS and JavaScript.