iogii is a successor to Atlas, from the same developer who made Golfscript.
Here is the starting guide, brief tutorial and quick reference. For another good introduction, see lynn's guide
Assorted tips
k can be used to repeat a scalar value. E.g., 1 3k = 1r3k = 1,1,1 and '*3k = '*r3k = "***". This is less useful for chars since * can be used instead, but it can sometimes save a byte on ints.
- The digit packing/unpacking ops
U,D,X are liberal in their inputs: the base can be negative, and the "digits" don't have to be in the range 0-b. So, they are useful for general geometric series stuff.
- The folding ops
i,f only accept one seed value. If you need more, you can add them as follows:
# 2 starting values
1i2*1c> # 1,1,2,2,4,4,...
1,1et2*a> # 1,1,2,2,4,4,...
# 3 starting values
1,1 1i2*a> # 1,1,1,2,2,2,...
1,1,1et2*a> # 1,1,1,2,2,2,...
- If you only need one value from an iteration operation, sometimes a fold can be shorter, particularly if you need commas on the operators.
"x"I,"y"C>10G,
"x"F,"y"10KC>
- Loops that involve multiple variables can be done by mutual recursion. For example, if you want to iteratively apply
x,y = y%5,x+1 with initial values 1,2, you can do
Y5%1c let X
X)2c let Y
- The "<<loop>>" error means there's a circular dependency somewhere, often either (1) a list element that's defined in terms of itself (2) the size of the list is defined in terms of itself. To solve the second problem, try adding zero padding
z, Z, Z,, etc., along all dimensions.
- Char packing is done by using the
. op to get numbers from Unicode strings. In rare cases, it may be useful to know that proceeding a string with b will get the UTF-8 bytes, e.g., "💎"b. = [240,159,146,142]