Andrew Burgess Andrew Burgess - 11 months ago 53
Javascript Question

Using Ramda, and pointfree style, how can I copy the first item of an array to the end of it?

I want to take an array

[1, 2, 3]
and return
[1, 2, 3, 1]

I'm using Ramda, and I can get the desired result like this:

const fn = arr => R.append(R.prop(0, arr), arr);

But I'd like to do it point-free. Here's the closest I've gotten:

const fn = R.compose(R.append, R.prop(0));


But that looks silly. What am I missing? Thanks!

Answer Source

converge can be very helpful for things like this.

const rotate = R.converge(R.append, [R.head, R.identity])
rotate([1, 2, 3]); //=> [1, 2, 3, 1]