Loopless Programming
> Looping - performing a computation repeatedly - is what programs do. In most computer languages, all loops are expressed by one of two statements:> Do While - repeat a code block until a condition is met> For - repeat a code block, with a loop index indicating how many times the block has been repeated.> Programmers trained on scalar languages have spent many years internalizing the Do-While and For paradigms. Discarding these paradigms is the biggest re-think they need to make when they learn J.A lot of languages have these kinds of semantics and arguably in a more streamlined / better organised way - Haskell typeclasses for example. I don't know if it's true that 'most languages' only support for/while loops, but probably not. It also doesn't take 'many years'  to internalise for/while loops, these are fairly basic constructs which are learned by most novices in the beginning of an introductory programming course.> (x + y) is an expression rather than a statement. The J programmer can embed (x + y) in a larger expression, perhaps a matrix multiplication (w +/ . * (x + y)) which adds the equivalent of three more nested loops, but is still a single expression. Expressions can be combined; statements cannot.(x + y) is going to be an expression in almost any language...> Many modern languages have iterators, which slightly streamline the For loop, but without addressing its fundamental deficiencies.What are the 'fundamental deficiencies'?This seems like a pretty low-effort write-up.