My take is obviously subjective, but, with regards to using ' for pairs, I feel like it may cause scrapscript code to be harder to read than it needs to be. Seeing " and ' juxtaposed makes my brain do a double take in order to reconcile what’s going on. I find that invoking pair as a function is clearer and more unambiguous.
I like the idea of using ~ for record access. It feels similar enough to the traditional record dot notation as to not be too overwhelming.
I think I’m somewhat neutral on the use of ; and ;; for singular bytes and multiple bytes respectively.
I think I prefer your other offline suggestion of using . for record access and , for “where”. But I do agree that we should mind the weirdness budget. I’ll write out some options and send em over soon
Thanks @max. After playing around with it, I think your suggestion to use . for record fields seems super solid.
And with that, I’m extremely happy with all syntax except the where operator. Here are some random thoughts/options:
. is nice because it’s visually quiet and doesn’t require the shift key. But if . is used for record access, it creates ambiguity in operator power. Record access is very “tight” while where is very “loose”, e.g. a . a = { b = 2 } . b is a . (a = ({ b = 2 } . b)).
; is convenient but ugly as hell. It may also reduce weirdness points because semicolon is regularly used as a statement separator, i.e. a ; a = 1 seems pretty easy to understand for newcomers. This is probably the best choice given my other constraints. We could then use tilde for bytes again.
~ is not generally an easy key to reach but it’s aesthetically appealing, e.g. a ~ a = 1. I think this is what my heart wants, but my brain knows it’s a bad idea.
, is convenient and very aesthetically appealing. But after trying it out in some toy programs, it feels clunky inside records/lists: [ 1, a, (b , b = 1) ] , a = 1