Some people just use one js function at the top to do everything.Can you get 'js function'in a libary so it will be not so easy to use no snap blocks,only js?
No, listen, if we don't force people to program the way I want them to (which would involve removing the SET block and the list mutation blocks), we're certainly not going to force them to program the way you want them to! :~/ Worry about your own code and let other people do whatever. Unless it hurts other people, then I'd worry.
I wonder what you have in mind, i.e. why would you want to get rid of SET block?
For functional programming
Yeah, exactly. The idea is that nothing ever changes its value. That sounds unusable but since you can have different local variables of recursive calls with the same name, when you feel like changing a value, you just make a recursive call instead.
Virtues of functional programming: (1) It's a really elegant way to think about many problems. (2) It avoids the kind of bug in which one part of the program changes the value of a variable that another part of the program is still using. (3) It's easier to parallelize code because you don't get the kind of concurrency bug in which process A reads a variable, process B changes it, process A adds one to the (old) value and stores that. (Such bugs are really hard to find, because they only pop up when you're really unlucky in how processes happen to be timed, so they're not reproducible. And also typically you don't find out about the bug until seconds later when some third part of the program trips over the inconsistency. This is why people who can design and/or debug operating systems, which were the first parallel processing programs, are the royalty of programmers.)