aboutsummaryrefslogtreecommitdiff
path: root/test/reductions.tm
blob: 47f1612a8f4ed25f372f43a06c3dd4919227e95b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
struct Foo(x,y:Int)

func main():
	>> (+) [10, 20, 30]
	= 60

	>> (_max_) [3, 5, 2, 1, 4]
	= 5

	>> (_max_:abs()) [1, -10, 5]
	= -10

	>> (_max_) [Foo(0, 0), Foo(1, 0), Foo(0, 10)]
	= Foo(x=1, y=0)
	>> (_max_.y) [Foo(0, 0), Foo(1, 0), Foo(0, 10)]
	= Foo(x=0, y=10)
	>> (_max_.y:abs()) [Foo(0, 0), Foo(1, 0), Foo(0, 10), Foo(0, -999)]
	= Foo(x=0, y=-999)

	!! (or) and (and) have early out behavior:
    >> (or) i == 3 for i in 9999999999999999999999999999
    = yes

    >> (and) i < 10 for i in 9999999999999999999999999999
    = no