S.equals(a, a) = true
(reflexivity)S.equals(a, b) = S.equals(b, a)
(symmetry)- If
S.equals(a, b)
andS.equals(b, c)
, thenS.equals(a, c)
(transitivity)
S.concat(S.concat(a, b), c)
is equivalent toS.concat(a, S.concat(b, c))
(associativity)
M.concat(a, M.empty())
is equivalent toa
(right identity)M.concat(M.empty(), a)
is equivalent toa
(left identity)
F.map(x => x, a)
is equivalent toa
(identity)F.map(x => f(g(x)), a)
is equivalent toF.map(f, F.map(g, a))
(composition)
A.ap(A.ap(A.map(f => g => x => f(g(x)), a), b), c)
is equivalent toA.ap(a, A.ap(b, c))
(composition)
A.ap(A.of(x => x), a)
is equivalent toa
(identity)A.ap(A.of(f), A.of(x))
is equivalent toA.of(f(x))
(homomorphism)A.ap(a, A.of(x))
is equivalent toA.ap(A.of(f => f(x)), a)
(interchange)
F.reduce(f, seed, a)
is equivalent totoArray(a).reduce(f, seed)
toArray
derivable asa => F.reduce((r, i) => r.concat([i]), [], a)
t(T.sequence(A1.of, a))
is equivalent toT.sequence(A2.of, T.map(t, a))
wheret
is a natural transformation fromA1
toA2
(naturality)T.sequence(Id.of, T.map(Id.of, a))
is equivalent toId.of(a)
(identity)T.sequence(Compose.of, T.map(Compose.of, a))
is equivalent toCompose.of(A1.map(x => T.sequence(A2.of, x), T.sequence(A1.of, a)))
(composition)
C.chain(g, C.chain(f, a))
is equivalent toC.chain(x => C.chain(g, f(x)), a)
(associativity)
M.chain(f, M.of(x))
is equivalent tof(x)
(left identity)M.chain(M.of, a)
is equivalent toa
(right identity)
E.extend(f, E.extend(g, a))
is equivalent toE.extend(x => f(E.extend(g, x)), a)
C.extend(C.extract, a)
is equivalent toa
C.extract(C.extend(f, a))
is equivalent tof(a)
C.extend(f, a)
is equivalent toC.map(f, C.extend(x => x, a))
https://github.com/rpominov/static-land