 func makeIotaParser() -> ParserProtocol {
 
     /*
-     (def identity (a) a)
-     (identity 5)
+     (def head (a b) a)
+     (head 9 5)
      */
 
     let space = " \t\n".match

            ])
        ])
    ]) {
        let p = try $0.raw("p")
        return try IotaFunc(param: p, body: $0.val("b"))
    }

    return transformer

    let expression = Deferred()

    let body = skip >>> expression >>> skip
    let params = lparen >>> identifier.some.maybe >>> rparen
    let function = (lparen >>> def >>> identifier.tag("name") >>> params.tag("params") >>> body.tag("body") >>> rparen).tag("function")

    let argument = skip >>> expression.some.maybe >>> skip
    let call = (lparen >>> identifier.tag("name") >>> argument.tag("arguments") >>> rparen).tag("call")

    expression.parser = literal | variable | call

