moonscript/tests/inputs/lists.moon

77 lines
1.3 KiB
Plaintext

hi = [x*2 for _, x in ipairs{1,2,3,4}]
items = {1,2,3,4,5,6}
mm = [@x for @x in ipairs items]
[z for z in ipairs items when z > 4]
rad = [{a} for a in ipairs {
1,2,3,4,5,6,
} when good_number a]
[z for z in items for j in list when z > 4]
require "util"
dump = (x) -> print util.dump x
range = (count) ->
i = 0
return coroutine.wrap ->
while i < count
coroutine.yield i
i = i + 1
dump [x for x in range 10]
dump [{x, y} for x in range 5 when x > 2 for y in range 5]
things = [x + y for x in range 10 when x > 5 for y in range 10 when y > 7]
print x,y for x in ipairs{1,2,4} for y in ipairs{1,2,3} when x != 2
print "hello", x for x in items
[x for x in x]
x = [x for x in x]
print x,y for x in ipairs{1,2,4} for y in ipairs{1,2,3} when x != 2
double = [x*2 for x in *items]
print x for x in *double
cut = [x for x in *items when x > 3]
hello = [x + y for x in *items for y in *items]
print z for z in *hello
-- slice
x = {1, 2, 3, 4, 5, 6, 7}
print y for y in *x[2:-5:2]
print y for y in *x[:3]
print y for y in *x[2:]
print y for y in *x[::2]
print y for y in *x[2::2]
-- vararg bubbling
f = (...) -> #{...}
x = (...) ->
[x*x for x in *{...} when f(...) > 4]
normal = (hello) ->
[x for x in yeah]
dont_bubble = ->
[x for x in ((...)-> print ...)("hello")]
test = x 1,2,3,4,5
print thing for thing in *test