src/class.bend checks
raw source on the hub · import 0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.bend as Class
1 import
import Base
Types
type Ord source · line 15 · raw
@-A:Data -> Type
a total order: a relation and a decision that returns the side that holds
Ord@-A:Data -> @R:(@_:A -> @_:A -> Type) -> @dec:(@x:A -> @y:A -> Or(R(x, y), R(y, x))) -> Ord<A>
type Semigroup source · line 29 · raw
@-A:Data -> Type
an associative operation
Semigroup@-A:Data -> @op:(@_:A -> @_:A -> A) -> @assoc:(@x:A -> @y:A -> @z:A -> {op(x, op(y, z)) == op(op(x, y), z) : A}) -> Semigroup<A>
type Group source · line 47 · raw
@-A:Data -> Type
addition and subtraction that undo each other (wrapping integers)
Group@-A:Data -> @add:(@_:A -> @_:A -> A) -> @sub:(@_:A -> @_:A -> A) -> @sub_add:(@a:A -> @b:A -> {a == sub(add(a, b), b) : A}) -> @add_sub:(@a:A -> @b:A -> {a == add(sub(a, b), b) : A}) -> Group<A>
Definitions
def Ord.R source · line 18 · raw
@-A:Data -> @d:Ord<A> -> @x:A -> @y:A -> Type
def Ord.dec source · line 23 · raw
@-A:Data -> @d:Ord<A> -> @x:A -> @y:A -> Or(Ord.R(A, d, x, y), Ord.R(A, d, y, x))
def Semigroup.op source · line 32 · raw
@-A:Data -> @d:Semigroup<A> -> @x:A -> @y:A -> A
def Semigroup.assoc source · line 41 · raw
@-A:Data -> @d:Semigroup<A> -> @x:A -> @y:A -> @z:A -> {Semigroup.op(A, d, x, Semigroup.op(A, d, y, z)) == Semigroup.op(A, d, Semigroup.op(A, d, x, y), z) : A}
def Group.add source · line 52 · raw
@-A:Data -> @d:Group<A> -> @a:A -> @b:A -> A
def Group.sub source · line 57 · raw
@-A:Data -> @d:Group<A> -> @a:A -> @b:A -> A
def Group.sub_add source · line 62 · raw
@-A:Data -> @d:Group<A> -> @a:A -> @b:A -> {a == Group.sub(A, d, Group.add(A, d, a, b), b) : A}
def Group.add_sub source · line 67 · raw
@-A:Data -> @d:Group<A> -> @a:A -> @b:A -> {a == Group.add(A, d, Group.sub(A, d, a, b), b) : A}
Templates
template Semigroup.fn source · line 38 · raw
@-A:Data -> @-d:Semigroup<A> -> @x:A -> @y:A -> A
op as a template function, for Base's templates (List.foldr, List.foldl)