问题
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));
fn(arr)(arr)
But that looks silly. What am I missing? Thanks!
回答1:
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]
回答2:
The S combinator is useful here:
S.S(S.C(R.append), R.head, [1, 2, 3]);
// => [1, 2, 3, 1]
来源:https://stackoverflow.com/questions/40026018/using-ramda-and-pointfree-style-how-can-i-copy-the-first-item-of-an-array-to-t