Inspired by the recent post on Crosscut, I started thinking about geometric programming, and what it might look like.
I came up with the idea of using areas and line segments of 2D shapes as inputs and outputs.
For example, a rectangle gives us addition (the half circumference), multiplication (the area), square root (using area as an input and measuring one of the sides):
(image 1)
One could imagine an iteration construct ala the one in Bret Victors computational drawing program, or similar to the one in Crosscut, that allowed expressing e.g. Fibonacci iteratively:
(image 2)
Here the green arrows connect inputs lines to output lines, and the dots show where line segments begin and end.
The dotted rectangles represent iteration, where the first rectangle is used to specify the relation to previous rectangles (exactly how is a bit vague, I know). The green line sets the distance between each iteration.
Similarly, a unit circle could show the angle as a bent line (in radians, as the circumference is 2*pi), and sin/cos as shown. Using sin/cos as inputs and measuring the bent line you get asin and acos:
(image 3)
Thoughts? Maybe it already exists?