fn print_function(f: {}) {
print(f.name)
print("(")
n := len(f.arguments)
for i n {
print(f.arguments[i].name)
if f.arguments[i].lifetime != none() {
print(": '" + unwrap(f.arguments[i].lifetime))
if f.arguments[i].takes != "any" {
print(" " + f.arguments[i].takes)
}
} else {
if f.arguments[i].takes != "any" {
print(": " + f.arguments[i].takes)
}
}
if (i + 1) < n {
print(", ")
}
}
print(")")
if f.returns != "void" {
if f.returns == "any" {
print(" ->")
} else {
print(" -> " + f.returns)
}
}
println("")
}
fn print_functions_type(functions: [{}], type) {
for i len(functions) {
if functions[i].type != type { continue }
print_function(functions[i])
}
}