 
     // Function calls.
 
-//    t.rule(["int": .simple("n")]) {
-//        let n = try $0.str("n")
-//        guard let int = IntType(n) else { throw SongTransformError.notNumeric(n) }
-//        return .integerValue(int)
-//    }
-//
-//    t.rule(["variableName": .simple("name")]) {
-//        .variable(try $0.str("name"))
-//    }
-
-    // TODO: needed?
     t.rule(["args": .series("args")]) {
         .list(try $0.vals("args"))
     }
 
-//    t.rule(["functionName": .simple("name")]) {
-//        .call(name: try $0.str("name"), arguments: [])
-//    }
-
-    // TODO: args should be simple or series?
     t.rule(["functionName": .simple("name"), "args": .series("args")]) {
         .call(name: try $0.str("name"), arguments: try $0.vals("args"))
     }

        return .callAnonymous(closure: expr, arguments: [head])
    }

    // TODO: args should be simple or series?
    t.rule(["head": .simple("head"), "anonCall": .simple("expr"), "args": .series("args")]) {
        let head = try $0.val("head")
        let expr = try $0.val("expr")

    t.rule(["scopeStatement": .simple("statement")]) {
        try $0.val("statement")
    }

    // Function declarations.

    t.rule(["subject": .simple("subject"), "functionName": .simple("name"), "guard": .simple("guard"), "body": .simple("body")]) {
        .subfunction(try transformFunction(args: $0))
