Paul: Have you considered using "=" for equality and ":=" for assignment? Me: I have thought about it, along with using <> for inequality. But, I don't have a strong preference for one over the other. Do let me know if you strongly prefer the syntax you suggested. A strong preference from you will definitely count. Paul: I strongly prefer using "=" for equality -- this is such a fundamental mathematical notation and it would be nice to bring it over to programming. I don't feel strongly about inequality, but using <> would be consistent with Pascal, which seems to be an inspiration for other Clay syntax. By the way, I like your use of colon in TypeSpecs -- again, it's closer to mathematical usage (and Pascal). Me: Regarding the operators for assignment and equality: The compound assignment operators such as "+=", "-=", etc. are quite useful. If ":=" were used as the assignment operator, then the usual compound assignment operators don't match because they don't have a colon character in them. We could update them to include the colon too, but they all have shortcomings: Both "a -:= b" and "a :-= b" look visually unpleasant. The third option "a :=- b" looks much better, but the syntax conflicts with the unary negation operator. Do you have any solutions to this problem? Paul: ALGOL 68 has compound assignment operators, and may well have been Dennis Richie's inspiration for C. It uses := for assignment, and +:=, -:=, *:=, /:=, %:= and %*:= . In ALGOL 68, / is real division, % is integer division, and mod or %* is the modulus operation. (Here's a tutorial: http://www.xs4all.nl/~jmvdveer/a68g-doc.pdf; here's the final revised reference manual: http://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB.pdf .) So if Clay followed ALGOL 68, there would be a precedent. I suggest you think about this for a while. Sometimes a symbol or construct looks strange at first, but looks fine after you get used to it.