Out of curiosity, why not just use Python, Ruby, F#, or COBOL, as your syntax/goals are similar to those languages?
On assignment versus equation, is there really an issue with using "=" and "==", respectively? When I first started programming it was a little confusing, sure. However, using only "=", which changes based on context, would only have confused things more, and the semicolon versus equal sign just makes the language look inconsistent. Alternatively, why not differentiate "assign" from "equals" like so:
function myfunc
integer a = 0
if a equals 0 // Use equals, rather than = or ==
return true
else
return 10 // Error, first return determines the type
myfunc(1)
myfunc(a = 1)
Also, why not just decide whether you want static or dynamic?
bool fooBar(int lhs = 0, int rhs = 0)
return lhs equals rhs
print "Is LHS equal to RHS? "
print fooBar(rhs = 2, lhs = 1) // I think this is what you intended when you wrote myFunc(a:1) (that is, any-order parameter assignment)
print newline
Your last code example also doesn't really make much sense. Why not just assign things with a name properly, as it'd be annoying to refactor the "a" tuple, forgetting that it can only ever hold one value of a single type:
data aData
int n = 1
string str = "Apple"
real r = 3.4
bool b = true
void fooBar(aData a)
a.n++
a.str += ", Apple"
a.real -= 1.2
a.b = false
void reflectionFunc(data d)
if d has int n
n++
if d has string str
str += ", Apple"
if d has real r
r -= 1.2
if d has bool b
b = false
aData a
// fooBar(a)
reflectionFunc(a)
* * *
lastly, have you looked into Jonathan Blow's 'JAI' programming language (
link)? He's not focused on syntax as of yet, but you might still find it interesting (actually, perhaps more so as he doesn't focus on syntax).