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)toArrayderivable 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))wheretis a natural transformation fromA1toA2(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 toaC.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