Arc Forumnew | comments | leaders | submitlogin
1 point by evanrmurphy 5348 days ago | link | parent

> Your other suggestions seem more subjective, though :)

I know, I'm afraid I'm earning a reputation here. ;) But out of curiosity, which ones were you thinking of? This point I feel strongly about, though I may have incomplete information:

> The s-family just doesn't make much sense anymore since 'assign replaced 'set in its traditional role.

My understanding is that at some point 'set became the new 'assert and 'assign the new 'set [http://arclanguage.org/item?id=9408]. The #\s in 'scar, 'scdr, 'sref and the "set" in 'safeset are presumably references to 'set, which no longer has anything to do with these functions (and macro). I know it's not a big deal, but isn't it an onion and potential source of confusion?



1 point by akkartik 5348 days ago | link

Yeah that was the one. scar/scdr don't have to make more sense than car/cdr. And they're kinda internal details, same as assign. Most of the time we'll just use (= (car ..) ..). That'll do, no?

-----

1 point by evanrmurphy 5348 days ago | link

I guess so, but changing 'set to 'assign would seem to indicate some sensitivity about the internal details on the language designer's part, and I think they are more important in code-as-spec languages like Arc. Granted you're right the naming of 'scar etc. isn't as important as the naming of commonly used forms like '=.

-----

1 point by akkartik 5348 days ago | link

I believe set was renamed to assign to free up the name for a better use.

The way I think about it: code as spec implies the implementation should be concise and easy to read, and externally exposed names should be approximately hamming encoded. Internal names can be longer without compromising conciseness (which is measured in tokens) or readability.

It's not black and white, just relative priorities.

-----