Some built-in identifier names in Arc, like 'load-table , are hyphenated in classic Lisp style while others, like 'listtable , are not. Is there a pattern to this, something I can use to help me remember names as I learn Arc?
It'd be interesting if there was a pattern to hyphenated names. I assume there isn't because I just hyphenate when it seems like I "should". i.e., Names are often broken up by hyphens because they're easier to read that way. No real algorithm for that. Things like the length of the name can play a factor (e.g., expand-metafn-call doesn't run together like expandmetafncall). Now that I think of it, that's probably why Common Lisp has so many hyphens: its long names would run together otherwise. Even so, it has butlast, notany, notevery, pushnew, and the p vs -p inconsistency.
Just from this, I see names that work well with hyphens: I can't parse createacct on first glance, hourssince & dayssince are awkward with the two S characters, responderr looks like "responder" with an extra R, pprprogn has too many similar letters jammed together, logfilename could be parsed as either "name of the logfile" or "log the filename", nof is just weird, etc. But there are names that don't strictly need hyphens: I think endtag, filltable, getuser, loadtable, loadtables, randkey, and others look fine, which indicates to me that the issue really is just aesthetic.
Also, is there a way to predict/guess/remember which letters to leave out of abbreviated identifier names? No... Consistent hyphenation and abbreviation are what make Scheme look so much nicer than Arc (and Clojure and every other mangled dialect).
Well, fallintothis explained it. There is a scheme: if the name is readable/unambigous w/out hyphens, don't use hyphens, else use some. There are exceptions like 'end-tag to match 'start-tag.
There are some "errors" assuming this scheme is correct, like 'fill-table which could be 'filltable. But Clojure has doto (not do-to) and doall (not do-all) for instance. I don't know Scheme enough, but Common Lisp, as fallintothis pointed it out, also has inconsistencies. I suppose Scheme has some.