summaryrefslogtreecommitdiff
path: root/lib/std/extremum.myr
blob: 2c46ae1e684ed4df544fd1ffacc7231720b57011 (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
37
38
39
40
pkg std =
	generic min	: (a : @a, b : @a -> @a)		:: numeric @a
	generic max	: (a : @a, b : @a -> @a)		:: numeric @a
	generic clamp	: (a : @a, min : @a, max : @a -> @a)	:: numeric @a
	generic abs	: (a : @a -> @a)			:: numeric @a
;;

generic min = {a, b
	if a < b
		-> a
	else
		-> b
	;;
}

generic max = {a, b
	if a > b
		-> a
	else
		-> b
	;;
}

generic clamp = {a, min, max
	if a < min
		-> min
	elif a > max
		-> max
	else
		-> a
	;;
}

generic abs = {a : @a :: numeric @a
	if a < (0 : @a)
		-> -a
	else
		-> a
	;;
}