3 ms·
Why not just bite the bullet and add optional {}:s to Python instead, so you don't have to learn a tool just to get normal command line (/oneliner) usability?
by berntb 15y ago
Why not just bite the bullet and add optional {}:s to Python instead, so you don't have to learn a tool just to get normal command line (/oneliner) usability?
The total sum of complexity to learn/use would be about the same (and Python would get multi instruction anon funs.)
- icebraining 15y agoPython one-liners are already possible using ; python -c 'import sys; a = int(sys.stdin.readline())) ; print(range(a))' EDIT: Not that I'm saying piep is useless; far from it, it seems very interesting. I'm saying that optional {}s wouldn't solve the problem that piep is trying to solve.
- berntb 15y agoYes, but my point was: How do you add an if to that Python code... or anything else dependent on Python indentation? Another example: map {} is better than having to learn weird single instruction variants like list comprehensions. And so on. In this case, it is easy to have a shell alias that loads a module and executes its parameter in any other language. Then you have any piep functionality not already built in. Ergo, no need for extra things to learn, in those languages.
- michaelmior 15y agoYou add an if using the ternary style syntax. i.e. "if foo then bar else baz". I think that's sufficient for what piep is trying to do. I can't imagine trying to do anything else with indentation that couldn't be accomplished with list comprehensions.
- berntb 15y agoSigh, do people really don't want to see that full support for one liners (not to mention anon funs of > 1 instruction) is a feature?! :-(
- michaelmior 15y agopiep seems to be designed for quick processing on the command line. If you want to do something especially complicated, you can (and probably should) write a separate script for it.
- gfxmonk 15y agoThe thing about piep (and other such tools) is that they can make some reasonable assumptions that would typically be a bad choice for a generic language - things like having global variables for commonly used items, making assumptions about how certain return values should be interpreted, etc. Small things like this wouldn't fit well with most general programming languages, with the possible exception of perl. Plus, it still doesn't solve the piping issue. constructing a command as a sequence of operations like: p.foo() | len(p) | p + 1 | str(p) is much easier to follow (and modify) than str(len(p.foo()) + 1) this is not a big deal for programming languages because we use variables, functions and other ways of structuring our code, but those don't map well to oneliners.