A simple variable: x = 10; A simple function: f[x] = x+2 Let's use longer, more descriptive names: add_two[x] = x+2 This function will add two to x and that will be the result of the function (what it returns implicitly) Here's a simple notation for a function with no name. Notice that it is the same as above, except that there is no name before the []: [x] = x+2 On its own, the above unnamed function cannot do anything, so let's set it to a variable: add_two = ([x]=x+2) This variable is now equal to the anonymous function, allowing us to access the function through the name of the variable. add_two[2] results in 4 It is now apparent that the following are equivalent: add_two = ([x]=x+2) add_two[x] = x+2 This is cool, so now let's make a more generalized solution for the problem of adding two numbers: adder[x] = ([y]=x+y) add_two = adder[2]; add_two[2] results in 4. also consider calling the adder function in this way: four = adder[2][2]