-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.js
More file actions
99 lines (87 loc) · 1.91 KB
/
example.js
File metadata and controls
99 lines (87 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// Arithmetic expressions
// - (1 + 2) * 3 // -9
// 4 ** 3 % 9 // 1
// Variable declarations
// var x = 1 + 2; x ** 3 // 27
// var a = 1 + 2; var b = 3 ** 2; var a = b; var b = a; a + b // 18
// Boolean expressions
// false && !true // false
// var a = true; var b = false; a && b != false // false
// var a = 1; var b = 2; a + 1 == b || false // true
// 1 <= 1 // true
// -1 > 2 // false
// Conditional expressions
// if (2 + 2 == 4) { true } else { false } // true
// var a = true; if (var x = 3; var y = 1; x % 2 == y) { a } else { !a } // true
// var x = 2; if (x == 2) { x / 2 } else { -1 } // 1
// First class functions
// var abs = function (x) {
// if (x > 0) {
// x
// } else {
// -x
// }
// };
// abs(-3) // 3
// var x = 2;
// var f = function (y) {
// y + x
// };
// var x = 3;
// f(5) // 7 (lexical scoping)
// var x = 9;
// var f = function (g) {
// g(x)
// };
// var add = function (x) {
// function (y) {
// x + y
// }
// };
// f(add(1)) // 10 (partially applied function)
// Recursive functions
// var factorial = function (n) {
// if (n == 0) {
// 1
// } else {
// n * factorial(n - 1)
// }
// };
// factorial(4) // 24
// Multi-dimensional arrays
// var a = [1, [10, 11], true]; a[1][0] // 10
// var a = [10 ** 0, 10 ** 1, 10 ** 2];
// var f = function (x) {
// if (x >= 3) {
// 2
// } else {
// if (x < 0) {
// 0
// } else {
// x
// }
// }
// };
// a[f(5)] // 100
// var a = [[1,2], [3,4]];
// var b = [[5, 6], [7, 8]];
// var c = [a, b];
// var add2d = function (arrs) {
// var m = arrs[0];
// var n = arrs[1];
// [[m[0][0] + n[0][0], m[0][1] + n[0][1]], [m[1][0] + n[1][0], m[1][1] + n[1][1]]]
// };
// add2d(c) // [[6, 8], [10, 12]]
// Multiple argument functions
// var add = function (x, y) {
// x + y
// };
// add(1, 2) // 3
var addR = function (x, y) {
if (x == 0) {
y
} else {
addR(x - 1, y + 1)
}
};
addR(10, 1) // 11