Paste: assignment syntax

Author: kssreeram
Mode: text
Date: Tue, 19 Oct 2010 06:16:27
Plain Text |
Have you considered using "=" for equality and ":=" for assignment?

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.

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).

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?

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:; here's the final revised reference manual: .)

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.

New Annotation