~/bend-docscommunity

src/v2.bend source

src/v2.bend on the hub · documented module

import Baseimport ./class.bend as Cimport ./u32.bend as U32# v2.bend: 2D integer vectors with wrapping + and -.##   import ./v2.bend as V2#   V2.V2{x, y}, V2.group()type V2 is Data:  V2{x: U32, y: U32}def add(a: V2, b: V2) -> V2:  match a b:    case V2{ax, ay} V2{bx, by}:      V2{U32.add(ax, bx), U32.add(ay, by)}def sub(a: V2, b: V2) -> V2:  match a b:    case V2{ax, ay} V2{bx, by}:      V2{U32.sub(ax, bx), U32.sub(ay, by)}law sub_add:  for a: V2  for b: V2  {a == sub(add(a, b), b) : V2}def sub_add(a, b):  match a b:    case V2{+ax, +ay} V2{+bx, +by}:      %U32.sub_add(ax, bx) : {V2{ax, ay} == V2{_, U32.sub(U32.add(ay, by), by)} : V2}      %U32.sub_add(ay, by) : {V2{ax, ay} == V2{ax, _} : V2}      {==}law add_sub:  for a: V2  for b: V2  {a == add(sub(a, b), b) : V2}def add_sub(a, b):  match a b:    case V2{+ax, +ay} V2{+bx, +by}:      %U32.add_sub(ax, bx) : {V2{ax, ay} == V2{_, U32.add(U32.sub(ay, by), by)} : V2}      %U32.add_sub(ay, by) : {V2{ax, ay} == V2{ax, _} : V2}      {==}def group() -> C.Group<V2>:  C.Group{add, sub, sub_add, add_sub}