<const Elements extends ReadonlyArray<order.Order<any>>>(
elements: Elements
): order.Order<{
readonly [I in keyof Elements]: [Elements[I]] extends [
order.Order<infer A>
]
? A
: never
}>Creates an Order for tuples by comparing corresponding elements using the
provided per-position Orders. Elements are compared left-to-right; the
first non-zero comparison determines the result.
When to use
Use when you need to sort fixed-position arrays lexicographically, with each position using its own ordering rule.
Details
This is an alias of Order.Tuple.
Example (Ordering tuples)
import { Number, String, Tuple } from "effect"
const ord = Tuple.makeOrder([String.Order, Number.Order])
console.log(ord(["Alice", 30], ["Bob", 25])) // -1
console.log(ord(["Alice", 30], ["Alice", 30])) // 0export const const makeOrder: <
Elements extends ReadonlyArray<Order<any>>
>(
elements: Elements
) => Order<{
readonly [I in keyof Elements]: [
Elements[I]
] extends [Order<infer A>]
? A
: never
}>
Creates an Order for tuples by comparing corresponding elements using the
provided per-position Orders. Elements are compared left-to-right; the
first non-zero comparison determines the result.
When to use
Use when you need to sort fixed-position arrays lexicographically, with each
position using its own ordering rule.
Details
This is an alias of Order.Tuple.
Example (Ordering tuples)
import { Number, String, Tuple } from "effect"
const ord = Tuple.makeOrder([String.Order, Number.Order])
console.log(ord(["Alice", 30], ["Bob", 25])) // -1
console.log(ord(["Alice", 30], ["Alice", 30])) // 0
makeOrder = import orderorder.function Tuple<
Elements extends ReadonlyArray<Order<any>>
>(
elements: Elements
): Order<{
readonly [I in keyof Elements]: [
Elements[I]
] extends [Order<infer A>]
? A
: never
}>
Creates an Order for a tuple type based on orders for each element.
When to use
Use when you need fixed-length tuple ordering with per-position orders.
Details
Compares tuples element-by-element using the corresponding order and stops at
the first non-zero comparison result. Tuples must have the same length as the
order collection, and the result is 0 only if all elements are equal.
Example (Ordering tuples)
import { Order } from "effect"
const tupleOrder = Order.Tuple([Order.Number, Order.String])
console.log(tupleOrder([1, "a"], [2, "b"])) // -1
console.log(tupleOrder([1, "b"], [1, "a"])) // 1
console.log(tupleOrder([1, "a"], [1, "a"])) // 0
Tuple