Skip to content

Instantly share code, notes, and snippets.

@maacl
Created April 16, 2012 14:09
Show Gist options
  • Save maacl/2399054 to your computer and use it in GitHub Desktop.
Save maacl/2399054 to your computer and use it in GitHub Desktop.
Nathan University Lesson 2.2
var reverse = function(expr) {
var make_node = function(t, left, right) {
return {tag: t,
left: left,
right: right};
};
if (expr.tag == 'note') {
return expr;
}
return make_node(expr.tag,
reverse(expr.right),
reverse(expr.left));
};
var endTime = function (time, expr) {
if (expr.tag == 'note') {
return time + expr.dur;
}
return endTime(time, expr.left) + endTime(time, expr.right);
};
var compile = function (musexpr) {
if (musexpr.tag == 'note') {
return [musexpr];
}
return compile(musexpr.left).concat(compile(musexpr.right));
};
@chrisvest
Copy link

I inlined make_node, IIRC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment