shithub: mc

ref: b744c317feeac6ba0b96d6d223e8acb3f2004b03
dir: /libstd/extremum.myr/

View raw version
pkg std =
	generic min	: (a : @a::numeric, b : @a::numeric  -> @a::numeric)
	generic max	: (a : @a::numeric, b : @a::numeric  -> @a::numeric)
	generic clamp	: (a : @a::numeric, min : @a::numeric, max : @a::numeric -> @a::numeric)
	generic abs	: (a : @a::numeric -> @a::numeric)
;;

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
	if a < (0 castto(@a::numeric))
		-> -a
	else
		-> a
	;;
}