# A lambda function is made with an arrow from the arguments # to the function body f = x -> 2x^2 @show f(2) # If the function takes more then one argument, parenthesis are required g = (x, y) -> x * y @show g(2, 3) # This also holds for functions taking no arguments p = () -> Float64(π) @show p() # Function currying is possible, so if anyone wants to do lambda calculus # feel free. h = x -> y -> x / y @show h(12)(4) # If a function has to be written over multiple lines, this can be done # with a "begin" block. fib = n -> begin a, b = 0, 1 for i in 1 : n a, b = b, a + b end a end @show fib.(0:6) # Lambdas can be useful when passing a function as an argument # without wanting to give it a name. Here is an example using a lambda # instead of using the do-syntax for file handling s = open(io -> String(read(io)), "test.txt", "r") println(s)