7 ms·
Why did POSIX disallow +options?
by devenblake 6y ago
Why did POSIX disallow +options?
- pdw 6y agoThe shell uses "-" to enable an option and "+" to disable it. I don't know who's to blame for this, but it's part of the POSIX standard.
- _carbyau_ 6y agoI can kind of see it as an ASCII art flowchart line. IE a line to indicate use of this option and a line with a strikethrough to indicate it has been "struck out" as an option. But using the conventional minus and plus symbols is indeed confusing.
- saurik 6y agoI mean, if you want to undo subtracting something, you add it? The only reason I ever found it confusing is that it was "backwards", but that feels like a forced error due to + requiring a shift while - doesn't.
- smallnamespace 6y ago"-" doesn't require hitting the shift key. Making the common case easy seems like a reasonable argument.
- naikrovek 6y ago> The shell uses "-" to enable an option and "+" to disable it. things like this are how I know that there are too many people who are absolutely insane and who make mundane decisions. - to add + to subtract absolute genius. is this what higher education teaches people? I didn't go to college, and maybe that was best.
- eyelidlessness 6y agoWeirdly, this kind of syntactic idiosyncrasy is something that got me interested in Erlang. Finally a language that uses full stops when a routine full stops. I find most of the rest of its syntax uncomfortable (I didn’t spend much time with the language, I’m sure it’s fine when you’re used to it), but I always found it weird to end a completed statement with a statement-list-joining punctuation mark.
- samatman 6y agoThis was inherited from Prolog, which ends terms with a full stop. Most other languages didn't want to handle the syntactic ambiguity of using the period as a decimal point and a statement separator.
- eyelidlessness 6y agoI thought of mentioning the Prolog heritage. Weirdly CSS (having the worst syntax consistency of any language I can think of) is hyphen-heavy and solves its negation infix operator ambiguity well: it needs to be surrounded by whitespace. For Prolog/Erlang, I think the preceding syntax is disambiguating enough
- GoblinSlayer 5y agoCOBOL terminates some statements with a period. And before that FLOW-MATIC https://en.wikipedia.org/wiki/FLOW-MATIC https://en.wikipedia.org/wiki/FLOW-MATIC
- macintux 6y agoThe punctuation in Erlang mirrors English so closely I find it frustrating when people complain about it. It's incredibly simple. Comma means "and", semi-colon ends a clause, full stop closes out the entire thought.
- toast0 5y agoErlang is great, and I got used to the punctuation, but it's kind of a pain when you're moving code around. Oh, now this is the last thing, gotta take off the ; or replace a , with a . At least when I was starting out, I'd have loved a more C-like syntax with {} and consistently semicolons. Of course, Elixir came and just got rid of most punctuation, which I like less. Anyway, it's consistent and after a couple weeks of messing it up, I can consistently see where the mistake is from the compiler error; after several years, I still sometimes mess it up, but oh well. I can't recall having messed up the punctuation so much that it still compiled but wasn't what I meant, so it's almost always quick to recover.
- throwawayboise 6y ago+ is the opposite of -. Not too hard to remember.
- niceairport 6y agoOr just think about all options as being prefixed with a "-"
- dogecoinbase 6y agoOne of my favorites is in POSIX date format strings: %p locale's equivalent of either AM or PM %P like %p, but lower case
- antonvs 6y agoThat's not a plus sign, it's a crossed-out hyphen
- Y_Y 5y ago> "that's a smile, not an upside-down frown!"
- wahern 6y agoYou could ask Richard Stallman himself, who is well known for responding to random inquiries from people. Presumably it was rejected because the whole point of POSIX was to consolidate, regularize, and simplify pre-existing practice. Adding "+" as an additional standard option signifier would take a huge step in the complete opposite direction. The only precedence for "+" would have been the `set` shell builtin, and AFAIU the committee only begrudgingly grandfathered that syntax. Someone elsethread mentioned the `date` utility, but if you look at the BSD implementation "+" isn't used as an option marker, per se, but rather to disambiguate operand strings. The 2001 standard only defined the following: date [−u] [+format] date [−u] mmddhhmm[[cc]yy] It's splitting hairs, but POSIX was at least able to shoehorn the legacy syntax into a more regularized base interface.
- deleted 5y ago[deleted]