It's not exactly a better Topaz, but I made Topaz Unicode to be more Topaz: https://gitlab.com/Screwtapello/topaz-unicode
foo(x)
...while the function that calculates a batch of values looks like: [foo(x) for x in somelist]
Meanwhile in Lil (and I'd guess APL and K), the one function works in both situations. 127 * sin (range sample_rate)*2*pi*freq_hz/sample_rate
This produces one second audio-clip of a "freq_hz" sine-wave, at the given sample-rate. The "range sample_rate" produces a list of integers from 0 to sample_rate, and all the other multiplications and divisions vectorise to apply to every item in the list. Even the "sin" operator transparently works on a list. maximum:if x > y x else y end
...without grouping symbols around the condition or the statements. Well, I guess "end" is kind of a grouping symbol, but the language feels very clean and concise and fluent.