# Empty closure

|| { 1 }

==>

SurrealQL(Closure(Pipe,Pipe,Block(BraceOpen,Number(Int),BraceClose)))

# Closure with param

|$a| { $a }

==>

SurrealQL(Closure(Pipe,ParamDefinition(VariableName),Pipe,Block(BraceOpen,VariableName,BraceClose)))

# Closure with typed param

|$a: number| { $a + 1 }

==>

SurrealQL(Closure(Pipe,ParamDefinition(VariableName,Colon,Type(TypeName)),Pipe,Block(BraceOpen,BinaryExpression(VariableName,Operator,Number(Int)),BraceClose)))

# Closure with multiple params

|$a, $b| { $a + $b }

==>

SurrealQL(Closure(Pipe,ParamDefinition(VariableName),ParamDefinition(VariableName),Pipe,Block(BraceOpen,BinaryExpression(VariableName,Operator,VariableName),BraceClose)))

# Closure with return type

|$a: number| -> number { $a + 1 }

==>

SurrealQL(Closure(Pipe,ParamDefinition(VariableName,Colon,Type(TypeName)),Pipe,LookupRight,TypeName,Block(BraceOpen,BinaryExpression(VariableName,Operator,Number(Int)),BraceClose)))
