Assignment vs equality (and more generally, expressions vs statements)
Background:
C-style languages use = for assignment and == for equality. This has the nice side-effect that statements are also expressions: an assignment statement x = 4 is also an expression which returns the value 4 (i.e. the result of the assignment). However, it means having to use a different symbol/syntax for equality.
VBScript (which has had more of an influence on Rockstar than I'd like to admit) uses = for both assignment and equality, and the operator behaves differently whether it's in an expression or a statement context. VB has two functions for running code at runtime: Execute() will execute a statement (but not return anything), and Eval will evaluate an expression (but can't be used to execute statements).
https://ericlippert.com/2003/09/20/why-does-vbscript-have-execute-executeglobal-and-eval/
I'd very much like to adopt the C-style philosophy that statements can also be expressions, but this means the keyword is (and aliases was, were, etc) can't be used for both assignment and comparison.
One option would be to restrict is to equality, and use different syntaxes for assignment:
X is 5 (expression which returns true/false depending on the value of X)
Let X be 5
Make X 6
Put 7 into XAnybody got any other good ideas as to how we might resolve this?
Source: RockstarLang/rockstar