/** * @since 0.24.0 */ import type { Kind, TypeClass, TypeLambda } from "effect/HKT" /** * @category type class * @since 0.24.0 */ export interface Of extends TypeClass { readonly of: (a: A) => Kind } /** * Returns a default `of` composition. * * @since 0.24.0 */ export const ofComposition = ( F: Of, G: Of ) => (a: A): Kind> => F.of(G.of(a)) const void_ = ( F: Of ): () => Kind => () => F.of(undefined) export { /** * @since 0.24.0 */ void_ as void } /** * @category do notation * @since 0.24.0 */ export const Do = ( F: Of ): () => Kind => () => F.of({})