ref: 19d7fac9e6210af527ee1e72de4878d3951c41f6
dir: /lib/std/cmp.myr/
use "extremum.use" use "types.use" pkg std = type order = union `Before `Equal `After ;; generic numcmp : (a : @a, b : @a -> order) const strcmp : (a : byte[:], b : byte[:] -> order) const strncmp : (a : byte[:], b : byte[:], n : size -> order) ;; generic numcmp = {a, b if a < b -> `Before elif a == b -> `Equal else -> `After ;; } const strcmp = {a, b var l l = min(a.len, b.len) for var i = 0; i < l; i++ if a[i] < b[i] -> `Before elif a[i] > b[i] -> `After ;; ;; if a.len < b.len -> `Before elif a.len > b.len -> `After else -> `Equal ;; } const strncmp = {a, b, n a = a[:min(a.len, n)] b = b[:min(b.len, n)] -> strcmp(a, b) }