1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var Cons = (function () {
|
4 | function Cons(value, next) {
|
5 | this.value = value;
|
6 | this.next = next;
|
7 | }
|
8 | Cons.prototype.toArray = function () {
|
9 | var array = [];
|
10 | var cur = this;
|
11 | while (cur !== undefined) {
|
12 | array.push(cur.value);
|
13 | cur = cur.next;
|
14 | }
|
15 | return array;
|
16 | };
|
17 | Cons.prototype.nth = function (index) {
|
18 | var cur = this;
|
19 | for (var i = 0; i < index && cur !== undefined; ++i) {
|
20 | cur = cur.next;
|
21 | }
|
22 | return cur === undefined ? undefined : cur.value;
|
23 | };
|
24 | return Cons;
|
25 | }());
|
26 | exports.Cons = Cons;
|
27 | function copyFirst(n, list) {
|
28 | var newHead = new Cons(list.value, undefined);
|
29 | var current = list;
|
30 | var newCurrent = newHead;
|
31 | while (--n > 0) {
|
32 | current = current.next;
|
33 | var cons = new Cons(current.value, undefined);
|
34 | newCurrent.next = cons;
|
35 | newCurrent = cons;
|
36 | }
|
37 | return newHead;
|
38 | }
|
39 | exports.copyFirst = copyFirst;
|
40 | function concat(a, b) {
|
41 | var list = new Cons(a.value, undefined);
|
42 | var prev = list;
|
43 | var cur = a;
|
44 | while ((cur = cur.next) !== undefined) {
|
45 | prev.next = new Cons(cur.value, undefined);
|
46 | prev = prev.next;
|
47 | }
|
48 | prev.next = b;
|
49 | return list;
|
50 | }
|
51 | exports.concat = concat;
|
52 |
|
\ | No newline at end of file |