|
|
|
|
|
by uryga
2079 days ago
|
|
> But at the same time this seems to require colons after... what exactly? not 100% sure but it kind of looks like copper's Whole Dealâ„¢ are "object-functions" (closures?) and you use colons to get an object function's return value. something like this adder = [a b]{ ret(this.a + this.b) }
x = adder(3 5)
print(x.a x.b x:) # 3 5 8
(i looked at the docs for like 10 minutes, could be wrong) |
|
In Copper, variables only store functions. This separates routine from data so you never end up with null pointer errors like in languages that have Any Types or pointers. Functions can return data, so you end up having function calls everywhere. a=5 is basically a={ret(5)}
In your above example the correct first line would be: adder = [a b] { ret(+(a: b:)) }
Parameters to a function are those that are not assigned data, whereas members are: add = [Param, Member=10) { ret(+(Param: this.Member:)) }
Now you can probably see what's wrong with your third line.