@UnrelatedString Good comparison to Jelly tacitness. As a non-jelly expert one thing I wonder about it is: it seems like there isn't a clear plan to turn any expression into Jelly code, but in practice it works very well since most expressions are simple and fit certain patterns (and is always possible). At least I never saw in the tutorial such a plan. Whereas iogii has a clear plan to turn any expression into iogii code, so maybe it is easier for complicated expressions?
@UnrelatedString On broadcasting it looks like you figured out the best ways, although instead of r,
you could have just used R
. Also instead of jE!at you maybe could have put the thing you want to take prefixes of in place of the ! if it is possible to move there. I agree that the current way is unintuitive sometimes but in general it can always be made to do what you want with the use of a single r I think.
In a non lazy language you could try to make list sizes match up when choosing the broadcasting rule but since iogii is lazy I always use the same rule - which I think is the best rule. I should add a section to the nitty gritty to help make more intuitive.
@UnrelatedString Yeah it is unclear which would be more useful most of the time (expand removing initial value or not) - I went with the current way since you can always remove it easily with tail. Can always wait and see how it tends to be used in practice and change later. There isn't a universal shortest way to get an empty list, but in practice I've never needed it. You can use the nil
op, or "" for strings, or 0jt for ints, or E>H if we don't change the behavior of expand.