Let's TDD clojure.core/reduce

Want the best way to learn Clojure?

Invest in yourself with my Beginner Clojure Signature Course.

  • 8 fundamental modules
  • 240 fun lessons
  • 42 hours of video
Beginner Clojure: An Eric Normand Signature Course

Summary: clojure.core/reduce is a powerful function, yet the code for it is so simple. It's four lines! We TDD our own implementation.

A couple of weeks ago I introduced a TDD-in-the-browser system and applied it to build map. reduce is another cornerstone of functional programming. I explained how reduce works recently, so that should help understand it from the outside.

But how does it work from the inside? Let's write a version of reduce.

Specification

Define a function my-reduce. It should take three arguments. The first argument, f, is a function. The second argument is the initial value. And the third argument is a collection of values. f is a function of two arguments. my-reduce should take one value from the collection and apply f to the initial argument and the first value. The return value of f will become the new initial value, and then

COMMING SOON

Conclusion

clojure.core/reduce is a very useful function. It's one of those functions I wish I had started using earlier. And building a version of reduce yourself can help you understand how the recursion works.

I hope you like it. If you liked this, you may like LispCast Introduction to Clojure. It's a video course about Clojure, starting from the ground up. It has exercises, animations, visuals, and code. Try it!

Want the best way to learn Clojure?

Invest in yourself with my Beginner Clojure Signature Course.

  • 8 fundamental modules
  • 240 fun lessons
  • 42 hours of video
Beginner Clojure: An Eric Normand Signature Course