UNPKG

1.68 kBJavaScriptView Raw
1var _curry2 =
2/*#__PURE__*/
3require("./internal/_curry2");
4
5var _dispatchable =
6/*#__PURE__*/
7require("./internal/_dispatchable");
8
9var _xtake =
10/*#__PURE__*/
11require("./internal/_xtake");
12
13var slice =
14/*#__PURE__*/
15require("./slice");
16/**
17 * Returns the first `n` elements of the given list, string, or
18 * transducer/transformer (or object with a `take` method).
19 *
20 * Dispatches to the `take` method of the second argument, if present.
21 *
22 * @func
23 * @memberOf R
24 * @since v0.1.0
25 * @category List
26 * @sig Number -> [a] -> [a]
27 * @sig Number -> String -> String
28 * @param {Number} n
29 * @param {*} list
30 * @return {*}
31 * @see R.drop
32 * @example
33 *
34 * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo']
35 * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']
36 * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']
37 * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']
38 * R.take(3, 'ramda'); //=> 'ram'
39 *
40 * const personnel = [
41 * 'Dave Brubeck',
42 * 'Paul Desmond',
43 * 'Eugene Wright',
44 * 'Joe Morello',
45 * 'Gerry Mulligan',
46 * 'Bob Bates',
47 * 'Joe Dodge',
48 * 'Ron Crotty'
49 * ];
50 *
51 * const takeFive = R.take(5);
52 * takeFive(personnel);
53 * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan']
54 * @symb R.take(-1, [a, b]) = [a, b]
55 * @symb R.take(0, [a, b]) = []
56 * @symb R.take(1, [a, b]) = [a]
57 * @symb R.take(2, [a, b]) = [a, b]
58 */
59
60
61var take =
62/*#__PURE__*/
63_curry2(
64/*#__PURE__*/
65_dispatchable(['take'], _xtake, function take(n, xs) {
66 return slice(0, n < 0 ? Infinity : n, xs);
67}));
68
69module.exports = take;
\No newline at end of file