Skip to content

Instantly share code, notes, and snippets.

@donnut
Created September 20, 2014 11:08
Show Gist options
  • Save donnut/79d3dcc3aa6bcf17d406 to your computer and use it in GitHub Desktop.
Save donnut/79d3dcc3aa6bcf17d406 to your computer and use it in GitHub Desktop.
Code Revisions 2 Embed URL HTTPS clone URL You can clone with HTTPS or SSH. Typescript implementation of https://github.com/Dobiasd/articles/blob/master/from_oop_to_fp_-_inheritance_and_the_expression_problem.md
var R = require('ramda');
var Bar;
(function (Bar) {
function bar(s) {
return {
step: stepBar(s),
display: displayBar(s)
};
}
Bar.bar = bar;
var stepBar = R.curry(function (s, delta) {
return bar(s + ' ' + delta.toString());
});
var displayBar = function (s) {
return s;
};
})(Bar || (Bar = {}));
module.exports = Bar;
var R = require('ramda');
var Foo;
(function (Foo) {
function foo(i) {
return {
step: stepFoo(i),
display: displayFoo(i)
};
}
Foo.foo = foo;
var stepFoo = R.curry(function (i, delta) {
return foo(i + delta);
});
var displayFoo = function (i) {
return i.toString();
};
})(Foo || (Foo = {}));
module.exports = Foo;
var R = require('ramda');
var Foo = require('./foo');
var Bar = require('./bar');
function stepAll(l) {
return R.map(function (b) {
return b.step(1);
}, l);
}
function displayAll(l) {
return R.map(function (b) {
return b.display;
}, l).join('\n');
}
(function main() {
var l = [Foo.foo(0), Bar.bar('')];
var l1 = stepAll(stepAll(l));
console.log(displayAll(l1));
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment