💾 Archived View for tilde.team › ~karx › blog › sandwich-devlog-3-function-junction.md captured on 2022-01-08 at 14:53:21.

View Raw

More Information

⬅️ Previous capture (2021-12-03)

-=-=-=-=-=-=-

Sandwich Devlog 3: Function Junction

Today, I added *functions!* functions are a neat little tool that let you "pipe" math operation outputs into other instructions.
For example, you could assign the output to a variable, like below:

	#Declare a function
	fxa3-3
	#Call the function and assign it to variable
	lv*x
	#will print out 6
	p$v

Or you could print it out directly:

	#Declare a function
	fxs30-3
	#Call it and print it out
	#Will print out 27
	p*x

You can also use variables *inside* a function, like so:

	#Declare a variable
	lv3
	#Declare a function that will use the variable
	fxs30-$v
	#Prints out 27
	p*x

Note that functions will only get evaluated *when they're called*. This means that if you reassign the variable `v` in between the function declaration and the function call, the function will use the *new* value of the variable. 
Also, functions are *re-evaluated for each call*. So if they depend on an outside variable and the variable changes frequently, the result of the function will also change frequently.

Nested function calls also work: 

	#Declare a function
	fxa2-2
	#Declare a function that calls the other one
	fya*x-4
	#Will print out 8
	p*y

Also note that the only operations you can perform inside a function are the math functions, which are `a`, `s`, `m`, and `d`.

The code is up on [tildegit](https://tildegit.org/karx/sandwich), so clone a copy and get started with sandwich!

tags: sandwich, rust, programming, devlog