Skip to content

Instantly share code, notes, and snippets.

View kaw2k's full-sized avatar

Rasa Welcher kaw2k

View GitHub Profile
export type Tree<T> = Leaf<T> | TreeNodeArray<T> | TreeNodeObject<T>;
type GenericObject<T> = { [key: string]: T };
type ChildrenArray<T> = Tree<T>[];
type ChildrenObject<T> = GenericObject<Tree<T>>
function mapObj<T, U>(fn: ((value: T, key: string) => U), obj: GenericObject<T>): GenericObject<U> {
let ret = {};
const { find, identity, toPairs, compose, map, curry } = require('ramda');
/* tslint:disable: no-any */
type AnyType = any;
/* tslint:enable: no-any */
type TComparator = (a: AnyType, b: AnyType) => number;
type TObjectComparator = {
[key: string]: TComparator;
function map(transformation, data) {
return data.map(transformation);
}
map(addOne, [1, 2, 3]);
map(addOne, listNode(1, listNode(2, listNode(3))));
map(addOne, treeNode(1, treeNode(2), treeNode(3)));
function addOneAndMultiplyTwo(x) { return multiplyTwo(addOne(x)); }
[1, 2, 3].map(addOneAndMultiplyTwo);
listNode(1, listNode(2, listNode(3))).map(addOneAndMultiplyTwo);
treeNode(1, treeNode(2), treeNode(3)).map(addOneAndMultiplyTwo);
[1, 2, 3].map(identity);
// [1, 2, 3]
listNode(1, listNode(2, listNode(3))).map(identity);
// listNode(1, listNode(2, listNode(3)))
treeNode(1, treeNode(2), treeNode(3)).map(identity);
// treeNode(1, treeNode(2), treeNode(3))
function identity(x) { return x; }
var tree = treeNode(1, treeNode(2), treeNode(3));
tree.map(function(x) {
return x + 1;
});
// treeNode(2, treeNode(3), treeNode(4))
function treeNode(value, left, right) {
return {
value: value,
left: left,
right: right,
map: function(transformation) {
var nextValue = transformation(nextValue);
var nextLeft;
if (left) nextLeft = left.map(transformation);
function treeNode(value, left, right) {
return {
value: value,
left: left,
right: right
};
}
var myTree = treeNode(1, treeNode(2), treeNode(3));
var linkedList = listNode(1, listNode(2, listNode( 3)));
linkedList.map(function(x) {
return x + 1;
});
// listNode(2, listNode(3, listNode( 4)));