 
     // Functions.
 
-    // TODO: bug in functions somewhere.
     let parameter = pattern
     let functionSubject = parameter.tag("defunSubject")
     let functionName = name.tag("FUNC")

    let statement = classDeclaration >>> `import` >>> function >>> expression
    let program = skip >>> statement

    return function
}

//    let listPattern = (list | listTemplate).tag("listPattern")

    let assign = skip >>> str("=") >>> skip
    let functionBody = expression.tag("body") >>> skip
    let ifKeyword = space >>> str("IF") >>> space
    let guardClause = (ifKeyword >>> expression).maybe.tag("guard")
    let function = functionSubject >>> dot >>> functionName >>> functionParameters.maybe >>> guardClause >>> assign >>> functionBody

    // Lambdas.

