Más contenido relacionado Similar a The Shape of Functional Programming (18) The Shape of Functional Programming7. Pattern 1 - Map(ish)
var array = [0,1,2,3,4,5];
var transformed = [];
for (var i = 0; i < array.length; i++) {
transformed.push(array[i] + 100);
}
transformed;
//=> [100, 101, 102, 103, 104, 105]
Saturday, October 5, 13
8. Pattern 1 - Map(ish)
// Underscore
_.map(array, function(n) {
return n + 100;
});
// Lemonad
L.map(L.add(100), array);
Saturday, October 5, 13
9. Pattern 2 - Filter(ish)
var array = [0,1,2,3,4,5];
var keepers = [];
for (var i = 0; i < array.length; i++) {
if (array[i] % 2 === 0) {
keepers.push(array[i]);
}
}
keepers;
//=> [101, 102, 103, 104, 105]
Saturday, October 5, 13
10. Pattern 2 - Filter(ish)
// Underscore
_.filter(array, function(n) {
if (n % 2 === 0) {
return true;
}
else {
return false;
}
});
// Lemonad
L.filter(L.isEven, array);
Saturday, October 5, 13
11. Pattern 3 - Reduce(ish)
var array = [0,1,2,3,4,5];
var sum = 0;
for (var i = 0; i < array.length; i++) {
sum += array[i];
}
sum;
//=> 15
Saturday, October 5, 13
12. Pattern 3 - Reduce(ish)
// Underscore
_.reduce(array, function(acc, n) {
return acc + n;
}, 0);
// Lemonad
L.reduce(L.uncurry(L.add), 0, array);
Saturday, October 5, 13
14. Fun.js at a glance
• Simple data
• Many small functions
• Larger abstractions built via composition
• OO to supplement (no dogma)
Saturday, October 5, 13
49. var table = [
{id: ‘555-55-5555’,
name: ‘Moe’,
age: 45},
{id: ‘777-77-7777’,
name: ‘Curly’,
age: 47}
];
Saturday, October 5, 13
52. function cell(table, col, row){
return table[row][col];
}
cell(table, ‘name’, 0);
//=> ‘Moe’
cell(table, ‘age’, 0);
//=> 45
#“
Saturday, October 5, 13
59. #
L.fix(cell, L._, ‘name’, L._);
var getName = L.fix(cell, L._, ‘name’, L._);
getName(table, 0);
//=> ‘Moe’
getName(table, 1);
//=> ‘Curly’
‘name’
Saturday, October 5, 13
74. “
var countValues = L.comp(L.len, Codd.col);
countValues(table, ‘name’);
//=> 2
#
Saturday, October 5, 13
77. Thanks
• The NationJS team
• O’Reilly
• Alan Dipert
• Paul Khuong
• The Underscore community
• The Clojure community
Saturday, October 5, 13
Notas del editor just kidding 1979 boolean data abstractions, composed from primitive types data abstractions, composed from primitive types show cell(table, r, c)