diff options
Diffstat (limited to 'spec/inputs/teal-lang.mp')
-rw-r--r-- | spec/inputs/teal-lang.mp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/spec/inputs/teal-lang.mp b/spec/inputs/teal-lang.mp index 3c9c79b..29769d5 100644 --- a/spec/inputs/teal-lang.mp +++ b/spec/inputs/teal-lang.mp | |||
@@ -3,10 +3,10 @@ $ -> | |||
3 | 3 | ||
4 | import "macro-teal" as {$} | 4 | import "macro-teal" as {$} |
5 | 5 | ||
6 | $var a, "{string:number}", {value:123} | 6 | $local "a:{string:number}", {value:123} |
7 | $var b, "number", a.value | 7 | $local "b:number", a.value |
8 | 8 | ||
9 | $def add, "(a:number,b:number):number", (a, b)-> a + b | 9 | $function "add(a:number, b:number):number", -> a + b |
10 | 10 | ||
11 | s = add(a.value, b) | 11 | s = add(a.value, b) |
12 | print(s) | 12 | print(s) |
@@ -16,17 +16,25 @@ $record Point, [[ | |||
16 | y: number | 16 | y: number |
17 | ]] | 17 | ]] |
18 | 18 | ||
19 | $field Point, '.', new, "(x: number, y: number):Point", (x, y)-> | 19 | $method "Point.new(x:number, y:number):Point", -> |
20 | $var point, "Point", setmetatable {}, __index: Point | 20 | $local "point:Point", setmetatable {}, __index: Point |
21 | point.x = x or 0 | 21 | point.x = x or 0 |
22 | point.y = y or 0 | 22 | point.y = y or 0 |
23 | point | 23 | point |
24 | 24 | ||
25 | $field Point, ":", move, "(dx: number, dy: number)", (dx, dy)=> | 25 | $method "Point:move(dx:number, dy:number)", -> |
26 | @x += dx | 26 | @x += dx |
27 | @y += dy | 27 | @y += dy |
28 | 28 | ||
29 | $var p, "Point", Point.new 100, 100 | 29 | $local "p:Point", Point.new 100, 100 |
30 | 30 | ||
31 | p\move 50, 50 | 31 | p\move 50, 50 |
32 | 32 | ||
33 | $function "filter(tab:{string}, handler:function(item:string):boolean):{string}", -> | ||
34 | [item for item in *tab when handler item] | ||
35 | |||
36 | $function "cond(item:string):boolean", -> item ~= "a" | ||
37 | |||
38 | res = filter {"a", "b", "c", "a"}, cond | ||
39 | for s in *res | ||
40 | print s | ||