Re:MoonScript, a programmer friendly language that compiles ...
by rweichler on Tuesday May 30, 2017 @06:35AM
(#14444249)
> default values for function parameters
function f(a, b, c, d)
a = a or 1
b = b or 2
c = c or 3
d = d or 4
end
> list comprehensionshttps://news.ycombinator.com/item?id=14444215
> local is default, not global
I think this is a con.
> a simple class system if you need it
I also think this is a con, because it limits flexibility.
Here's my class system:
Object = {}
function Object:new()
local self = setmetatable({}, {__index = self})
return self
end
And how to use it: local super = Object
Shape = Object.new(super)
function Shape:new(color)
local self = super.new(self)
self.color = color
return self
end
local super = Shape
RedShape = Object.new(super)
function RedShape:new()
local self = super.new(self, 0xff0000)
return self
end
If I want to add multiple inheritance, or interfaces, it is easy. Because it is just metatables. With MoonScript this is not possible.> `export`, `from` and `import` keywords
Sounds like a con to me. `require` is simple.
> `+=`, `/=`, `*=`
I agree with this one.
Re:MoonScript, a programmer friendly language that compiles ...
by shalabhc on Tuesday May 30, 2017 @06:51AM
(#14444320)
>
function f(a, b, c, d)
a = a or 1
b = b or 2
c = c or 3
d = d or 4
end
Compare with: f = (a=1, b=2, c=3, d=4) -> ...
Also note the latter is correct when you call it as f(false).
- default values for function parameters
- list comprehensions
- easier iteration (e.g. `for key, value in pairs obj`)- local is default, not global
- a simple class system if you need it
- `export`, `from` and `import` keywords
- `+=`, `/=`, `*=` etc. operators
- indentation based scope (ok, this is debatable)
I can't think of a single place where plain Lua is actually better. OK maybe `:` is better as a method call operator, but that's it.