/** * `AssociativeFlatten` describes a type that can be "flattened" in an * associative way. * * For example, if we have a list of lists of lists, we can flatten it by either * flattening the two inner lists and then flattening the resulting lists, or * flattening the two outer lists and then flattening that resulting list. * Because the operation is associative, the resulting list is the same either * way. * * @tsplus type AssociativeFlatten */ export interface AssociativeFlatten extends HKT.Typeclass { readonly Law: { AssociativeFlatten: "AssociativeFlatten" } readonly flatten: ( ffa: HKT.Kind> ) => HKT.Kind }