summaryrefslogtreecommitdiff
path: root/spec/inputs/teal-lang.mp
diff options
context:
space:
mode:
Diffstat (limited to 'spec/inputs/teal-lang.mp')
-rw-r--r--spec/inputs/teal-lang.mp22
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
4import "macro-teal" as {$} 4import "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
11s = add(a.value, b) 11s = add(a.value, b)
12print(s) 12print(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
31p\move 50, 50 31p\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
38res = filter {"a", "b", "c", "a"}, cond
39for s in *res
40 print s