Skip to content

Instantly share code, notes, and snippets.

@dimitris-papadimitriou-chr
Created July 20, 2019 19:34
Show Gist options
  • Save dimitris-papadimitriou-chr/1d56c61e32d99279a44ecd39e5568535 to your computer and use it in GitHub Desktop.
Save dimitris-papadimitriou-chr/1d56c61e32d99279a44ecd39e5568535 to your computer and use it in GitHub Desktop.
//https://medium.com/@dimpapadim3
var node = (left, value, right) => ({
left: left,
value: value,
right: right,
map: f => node(left.map(f), f(value), right.map(f)),
fold: (mempty, mappend) =>
mappend(mappend(mappend(mempty, left.fold(mempty, mappend)), value), right.fold(mempty, mappend))
});
var leaf = value => ({
value: value,
map: f => leaf(f(value)),
fold: (acc, mappend) => mappend(acc, value)
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment