summaryrefslogtreecommitdiff
path: root/test/traitimpl.myr
blob: 6299b4328e56ca09b0d9dc4bfd41f19824241ee6 (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
26
27
28
29
30
31
32
33
34
35
36
use std

trait frobable @a =
	frob	: (val : @a -> @a)
;;

impl frobable int =
	frob = {val
		-> val * 2
	}
;;

impl frobable int16 =
	frob = {val
		-> val * 4
	}
;;

impl frobable byte[:] =
	frob = {val
		-> val[:4]
	}
;;

generic foo = {x : @a::frobable
	-> frob(x)
}

const main = {
	var a, b, c
	a = foo(123)
	b = foo(11 castto(int16))
	c = frob("meeeeeeh")
	std.put("{},{},{}\n", a, b, c)
}